您在應用程式中定義的回呼函式,可處理傳送至視窗的訊息。 WNDPROC 類型會定義此回呼函式的指標。 WndProc 名稱是您在應用程式中定義之函式名稱的預留位置。
語法
WNDPROC Wndproc;
LRESULT Wndproc(
HWND unnamedParam1,
UINT unnamedParam2,
WPARAM unnamedParam3,
LPARAM unnamedParam4
)
{...}
參數
unnamedParam1
類型: HWND
視窗的控點。 此參數通常命名為 hWnd。
unnamedParam2
類型: UINT
訊息。 此參數通常命名為 uMsg。
如需系統提供的訊息清單,請參閱 系統定義的訊息。
unnamedParam3
類型: WPARAM
其他訊息資訊。 此參數通常命名為 wParam。
wParam 參數的內容取決於 uMsg 參數的值。
unnamedParam4
類型: LPARAM
其他訊息資訊。 此參數通常命名為 lParam。
lParam 參數的內容取決於 uMsg 參數的值。
返回值
類型: LRESULT
回覆值是訊息處理的結果,且取決於傳送的訊息。
備註
備註
參數定義在標頭中,沒有名稱: typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);。 因此,語法區塊會將它們列為 unnamedParam1 - unnamedParam4。 您可以在應用程式中為這些參數命名任何名稱。 但是,它們通常按照參數描述中所示命名。 Visual Studio 專案範本會使用這些名稱 (或類似的名稱,視範本而定)。
如果您的應用程式在 32 位版本的 Windows 作業系統上執行,則回呼中未攔截的例外狀況將會在可用時傳遞至應用程式的較高層級例外狀況處理常式。 然後,系統會呼叫未處理的例外狀況篩選,在終止進程之前處理例外狀況。 如果啟用了 PCA,它將在您下次運行應用程序時提供解決問題。
不過,如果您的應用程式在 64 位版本的 Windows 作業系統或 WOW64 上執行,您應該注意 64 位作業系統會根據其 64 位處理器架構、例外狀況架構和呼叫慣例,以不同的方式處理未攔截的例外狀況。 下表摘要說明 64 位 Windows 作業系統或 WOW64 處理未攔截例外狀況的所有可能方式。
| 行為類型 | 系統如何處理未攔截的例外狀況 |
|---|---|
| 1 | 系統會隱藏任何未捕獲的異常狀況。 |
| 2 | 系統會先終止進程,然後程式相容性助理 (PCA) 會在您下次執行應用程式時提供修正它。 您可以將相容性區段新增至 應用程式資訊清單,以停用 PCA 風險降低。 |
| 3 | 系統會呼叫例外狀況篩選,但在離開回呼範圍時隱藏任何未攔截的例外狀況,而不叫用相關聯的處理常式。 |
下表顯示 64 位版本的 Windows 作業系統和 WOW64 如何處理未攔截的例外狀況。 請注意,行為類型 2 僅適用於 Windows 7 作業系統和更新版本的 64 位版本。
| 操作系統 | 哇64 | 64 位元 Windows |
|---|---|---|
| 視窗XP | 3 | 1 |
| Windows 伺服器 2003 | 3 | 1 |
| Windows Vista | 3 | 1 |
| Windows Vista SP1 | 1 | 1 |
| Windows 7 和更新版本 | 1 | 2 |
備註
在 Windows 7 SP1 (32 位、64 位或 WOW64) 上,系統會在終止進程之前呼叫未處理的例外狀況篩選來處理例外狀況。 如果啟用了程序兼容性助手 (PCA),那麼它將在您下次運行應用程序時提供解決問題。
如果您需要處理應用程式中的異常狀況,可以使用結構化異常處理來執行此操作。 如需如何使用結構化例外狀況處理的詳細資訊,請參閱 結構化例外狀況處理。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
| Header | winuser.h (包括 windows.h) |