汇编语言WinProc过程:接收并处理所有与窗口有关的事件消息
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 默认的消息处理程序)。
发表评论