WinProc 程接收并处理所有与窗口有关的事件消息。这些事件绝大多数是由用户通过点击和拖动鼠标、按下键盘按键等操作发起的。这个过程的工作就是解码每个消息,如果消息得以识别,则在应用程序中执行与该消息相关的任务。
过程声明如下:
根据具体的消息 ID,第三个和第四个参数的内容可变。比如,若点击鼠标,那么 lParam 就为点击位置的 X 坐标和 Y 坐标。在后面的示例程序中,WinProc 过程处理了三种特定的消息:
比如,下面的代码行通过调用 MessageBox 向用户显示一个弹出消息框来处理 WM_LBUTTONDOWN:
.IF eax == WM_LBUTTONDOWN
INVOKE MessageBox, hWnd, ADDR PopupText,
ADDR PopupTitle, MB_OK
jmp WinProcExit
用户所见的结果消息如下图所示。其他不希望被处理的消息都会被传递给 DefWindow-Proc(MS-Windows 默认的消息处理程序)。