先看一下键盘按键按下时的消息
鼠标消息
下面是我对键盘和鼠标的一个消息处理过程,这只是消息处理函数部分
//窗口过程函数的实现(消息处理函数) LRESULT CALLBACK MyWindowProc( HWND hwnd, // handle to window 窗口句柄 UINT uMsg, // message identifier 消息标识 WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { switch(uMsg) { case WM_PAINT: { TCHAR str[] = _T("这是一个Windows的SDK程序!"); HDC hDc; PAINTSTRUCT Ps; hDc = BeginPaint(hwnd,&Ps); //获取设备环境句柄 SetTextColor(hDc,RGB(13,25,200)); //设置文本颜色 TextOut(hDc,0,0,str,18); //输出文字 EndPaint(hwnd,&Ps); //释放资源 break; } case WM_CLOSE: //点击"X"按钮时发送此消息,使消息循环停止 if(IDYES == MessageBox(hwnd,_T("是否要退出?"),_T("提示"),MB_YESNO)) { DestroyWindow(hwnd); //销毁窗口,发送WM_DESTROY消息,注意程序进程还没退出 } break; case WM_DESTROY: PostQuitMessage(NULL); //进程结束,完全退出程序 break; case WM_LBUTTONDOWN://鼠标按下消息 { if (wParam&MK_SHIFT) { MessageBox(hwnd,_T("Shift和鼠标左键同时按下"),_T("消息框"),MB_OK); } else MessageBox(hwnd,_T("只是鼠标左键按下,Shift键没按下"),_T("消息框"),MB_OK); } break; case WM_KEYDOWN://按键按下 { switch(wParam) { case VK_END: MessageBox(hwnd,_T("End键按下"),_T("消息框"),MB_OK); break; } }; break; case WM_KEYUP://释放按键 { switch(wParam) { case VK_RETURN: MessageBox(hwnd,_T("Enter键释放"),_T("消息框"),MB_OK); break; } }; break; case WM_CHAR://按下一个字符按键 { switch(wParam) { case 0x41: MessageBox(hwnd,_T("A键按下"),_T("消息框"),MB_OK); break; } }; break; default: return DefWindowProc(hwnd,uMsg,wParam,lParam); //处理未处理的消息 break; } return 0; }