汇编语言WinProc过程:接收并处理所有与窗口有关的事件消息

< 上一页WinMain过程 ErrorHandler过程下一页 >
WinProc 程接收并处理所有与窗口有关的事件消息。这些事件绝大多数是由用户通过点击和拖动鼠标、按下键盘按键等操作发起的。这个过程的工作就是解码每个消息,如果消息得以识别,则在应用程序中执行与该消息相关的任务。

过程声明如下:

WinProc PROC,
hWnd: DWORD,         ;窗口句柄
localMsg: DWORD,    ;消息 ID
wParam:DWORD,       ;参数 1 (可变)
lParam: DWORD         ;参数 2 (可变)

根据具体的消息 ID,第三个和第四个参数的内容可变。比如,若点击鼠标,那么 lParam 就为点击位置的 X 坐标和 Y 坐标。在后面的示例程序中,WinProc 过程处理了三种特定的消息:
  • WM_LBUTTONDOWN,用户按下鼠标左键时产生该消息
  • WM_CREATE,表示刚刚创建主窗口
  • WM_CLOSE,表示将要关闭应用程序主窗口

比如,下面的代码行通过调用 MessageBox 向用户显示一个弹出消息框来处理 WM_LBUTTONDOWN:
.IF eax == WM_LBUTTONDOWN
INVOKE MessageBox, hWnd, ADDR PopupText,
    ADDR PopupTitle, MB_OK
jmp WinProcExit
用户所见的结果消息如下图所示。其他不希望被处理的消息都会被传递给 DefWindow-Proc(MS-Windows 默认的消息处理程序)。

< 上一页WinMain过程 ErrorHandler过程下一页 >