本文共 990 字,大约阅读时间需要 3 分钟。
函数原型:
LRESULTCALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
窗口过程函数决定了当一个窗口从外界接收到不同的信息时,所采取的不同反应,即主要用于处理发送给窗口的信息。hwnd是要处理窗口的句柄;message是消息ID,代表了不同的消息类型;wParam和lParam代表了消息的附加信息,附加信息会随着消息类型的不同而不同。
当键盘消息发出时,wParam的值为按下按键的虚拟键码,lParam则存储按键的相关状态信息。因此,如果窗口对传入的键盘消息处理时,只需要判断wParam的值即可。
当鼠标消息发出时,wParam值为鼠标按键的信息,而lParam则储存鼠标的坐标,高字节代表y坐标,低字节代表x坐标。即g_y =HIWORD(lParam), g_x = LOWORD(lParam)
常见窗口过程函数框架如下:
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{ switch(message) //根据不同的消息类型进行不同的处理 { case WM_PAINT: //若是客户区重绘消息 Window_Paint(); //调用窗口绘制函数 ValidateRect(hwnd, NULL); //更新客户区的显示,使无效区域变有效 break; case WM_KEYDOWN: //若是键盘按下消息 if(wParam == VK_ESCAPE) //若是ESC键 DestroyWindow(hwnd); //摧毁窗口并发送一条WM_DESTROY消息 break; case WM_DESTROY: //若是窗口摧毁消息 Window_CleanUp(); //先调用资源清理函数清理掉预先的资源 PostQuitMessage(0); //向系统表明有个线程有终止请求,用来响应WM_DESTROY消息 break; default: return DefWindowProc(hwnd, message, wParam, lParam); //调用默认窗口过程为应用程序没有处理的窗口消息提供默认的处理 } return 0; }
转载地址:http://xzlws.baihongyu.com/