小甲鱼 发表于 2016-4-21 01:27:04

WindowProc

注:本文档由 百日维新 翻译,小甲鱼校对。

原文链接 -> 传送门

函数功能:

WindowProc 回调函数是一个应用程序定义处理发送给窗口的消息的函数。WINDPROC 类型定义了一个指向该回调函数的指针。WindowProc 函数是用于应用程序定义函数的占位符。


API 函数原型:

注释:_In_ 说明该参数是输入的。
LRESULT CALLBACK WindowProc(
_In_ HWND   hwnd,
_In_ UINT   uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);

参数解析:


参数 含义
hwnd 指向窗口的句柄
uMsg 指定消息类型(更多系统提供的消息列表,查阅 System-Defined Messages,部分翻译 -> 传送门)
wParam 指定消息的附加参数,该参数的内容与 uMsg 参数值有关
lParam 指定消息的附加参数,该参数的内容与 uMsg 参数值有关


返回值:

返回值就是消息处理结果,它与发送的消息有关。


备注:

1. 如果您的应用程序运行在 32 位版本的 Windows 操作系统,当异常存在更上一级的异常处理程序,那么在回调中未捕获的异常将被传递到应用程序更上一级的异常处理程序。然后系统调用未处理异常过滤器处理先前的异常以终止该流程。如果程序兼容性助手(PCA)被开启,当您下次运行应用程序它将修复这个问题。

2. 如果您的应用程序运行在 64 位版本 Windows 操作系统或者 64 位子系统(WOW64),您应该知道一个基于 64 位的处理器架构,异常结构和调用法则的操作系统处理未捕获的异常是不同的。下面的表总结了所有 64 位 Windows 操作系统或 64 位子系统处理未捕获的异常可能的方式。


处理类型 系统怎么处理未捕获异常
1 系统压制未捕获异常
2系统首先终止流程,然后您下次运行该应用程序时,程序兼容性助手(PCA)将修复问题。您可以通过在应用程序清单文件添加兼容模块禁用程序兼容性助手(PCA)
3 当它离开回调范围,系统调用异常过滤器,但不压制未捕获异常,不调用关联的处理程序


下表展示了 64 位版本 Windows 操作系统或 64 位子系统(WOW64)处理未捕获的异常。注意,处理类型 2 只适用于 64 位版本的 Windows 7 操作系统。


操作系统 WOW64 64-bit Windows
Windows XP 3 1
Windows Server 2003 3 1
Windows Vista 3 1
Windows Vista SP1 1 1
Windows 7 1 2

注释:在Windows 7 SP1(32位, 64 位或 64 位子系统)中,系统调用未处理异常过滤器处理先前的异常以终止该流程。如果程序兼容性助手(PCA)被开启,当您下次运行应用程序它将修复这个问题。

如果您需要在应用程序中处理异常 , 您可以使用结构化异常去处理。更多有关如何使用结构化异常处理的信息,参见 Structured Exception Handling。


需求:


Minimum supported client Windows 2000 专业版 [仅桌面应用程序]
Minimum supported server Windows 2000 服务器版 [仅桌面应用程序]
Header Winuser.h (包含于 Windows.h)


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
页: [1]
查看完整版本: WindowProc