先看一下键盘按键按下时的消息
鼠标消息
下面是我对键盘和鼠标的一个消息处理过程,这只是消息处理函数部分
//窗口过程函数的实现(消息处理函数)
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;
}