WNDPROC 回调函数 (winuser.h)
一个回调函数,可在应用程序中定义,用于处理发送到窗口的消息。 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
返回值是消息处理的结果,取决于发送的消息。
注解
如果应用程序在 32 位版本的 Windows 操作系统上运行,则回调中未捕获的异常将传递到应用程序的更高级别异常处理程序(如果可用)。 然后,系统调用未经处理的异常筛选器,以在终止进程之前处理异常。 如果 PCA 已启用,它将在下次运行应用程序时提供修复问题。
但是,如果应用程序在 64 位版本的 Windows 操作系统或 WOW64 上运行,则应注意 64 位操作系统根据其 64 位处理器体系结构、异常体系结构和调用约定以不同的方式处理未捕获的异常。 下表汇总了 64 位 Windows 操作系统或 WOW64 处理未捕获异常的所有可能方式。
行为类型 | 系统如何处理未捕获的异常 |
---|---|
1 | 系统禁止出现任何未捕获的异常。 |
2 | 系统首先终止进程,然后程序兼容性助手 (PCA) 下次运行应用程序时提供修复它。 可以通过向 应用程序清单添加“兼容性”部分来禁用 PCA 缓解措施。 |
3 | 系统调用异常筛选器,但在离开回调范围时禁止任何未捕获的异常,而不调用关联的处理程序。 |
下表显示了 64 位版本的 Windows 操作系统和 WOW64 如何处理未捕获的异常。 请注意,行为类型 2 仅适用于 64 位版本的 Windows 7 操作系统及更高版本。
操作系统 | WOW64 | 64 位 Windows |
---|---|---|
Windows XP | 3 | 1 |
Windows Server 2003 | 3 | 1 |
Windows Vista | 3 | 1 |
Windows Vista SP1 | 1 | 1 |
Windows 7 及更高版本 | 1 | 2 |
注意
在 SP1 (32 位、64 位或 WOW64) 的 Windows 7 上,系统会调用未经处理的异常筛选器来处理异常,然后再终止进程。 如果启用了程序兼容性助手 (PCA) ,它将在下次运行应用程序时提供修复问题。
如果需要处理应用程序中的异常,可以使用结构化异常处理来执行此操作。 有关如何使用结构化异常处理的详细信息,请参阅 结构化异常处理。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | winuser.h (包括 windows.h) |