(winuser.h) WNDPROC 回调函数

在应用程序中定义的回调函数,用于处理发送到窗口的消息。 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 系统调用异常筛选器,但在离开回调范围时禁止显示任何未捕获的异常,而无需调用关联的处理程序。

下表显示了 Windows 操作系统和 WOW64 的 64 位版本如何处理未捕获的异常。 请注意,行为类型 2 仅适用于 Windows 7 操作系统及更高版本的 64 位版本。

操作系统 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 上,系统会调用未经处理的异常筛选器来处理异常,然后再终止进程。 如果启用了 Program Compatibility Assistant (PCA) ,则在下次运行应用程序时,它将提供解决此问题。

如果需要处理应用程序中的异常,可以使用结构化异常处理来执行此操作。 有关如何使用结构化异常处理的详细信息,请参阅 结构化异常处理

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 winuser.h (包括 windows.h)

请参阅