一、键盘
1.1.应用程序从Windows接收的键盘消息分为击键消息和字符消息.
1.可显示字符的击键:Windows不仅给程序发送按键消息,而且还发送字符消息
2.无显示字符的击键:包括shift键、功能键、光标移动键和特殊字符键如Insert和Delete, Windows只产生按键消息。
1.2击键消息
wParam是虚拟键代码,数字键和字母键的虚拟键码是ASCII码.
1.系统击键(WM_SYSKEYDOWN,WM_SYSKEYUP)
系统击键常由与Alt相组合的击键产生.Windows通常忽略系统击键消息,并将它们传送给DefWindowProc处理.
2.非系统击键(WM_KEYDOWN,WM_KEYUP)
非系统击键消息是在按下或者释放不带Alt键的键时产生的,应用程序可以使用或者忽略这些消息,Windows本身并不处理这些消息。
1.3字符消息
1.消息循环中的TranslateMessage函数将击键消息转换为字符消息
2.分类
(1)系统字符:WM_SYSCHAR,WM_SYSDEADCHAR <--WM_SYSKEYDOWN
(2)非系统字符:WM_CHAR,WM_DEADCHAR <--WM_KEYDOWN
3.大多数情况下,Windows程序会忽略除WM_CHAR之外的任何消息.
4.字符消息是夹在击键消息之间传递给窗口过程函数的.
二、鼠标
2.1简单定义
1.鼠标光标:当Windows用户移动鼠标时,Windows在显示器上移动一个称为鼠标光标的小位图。
2.热点:鼠标光标有一个指向显示器上精确位置的单像素即热点。热点的位置就是鼠标光标在屏幕上的位置.
3.鼠标光标可以使用Windows预定义光标,也可以自定义光标.
Windows预定义鼠标光标:
IDC_ARROW
IDC_CROSS
IDC_WAIT
2.2鼠标消息分类
1.客户区鼠标消息(10个)
如:WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_RBUTTONDOWN,WM_LBUTTONDBLCLK
(1)对客户区鼠标消息来说,lParam值含有鼠标的位置:低位字为x坐标,高位字为y坐标(相对于窗口客户区左上角)可使用LOWORD和HIWORD宏来提取鼠标位置坐标:
x=LOWORD(lParam);
y=HIWORD(lParam);
(2)wParam值指示鼠标键和Shift和Ctrl键的状态
2.非客户区鼠标消息(11个)
(1)通常,Windows应用程序不必处理非客户区鼠标消息,将这些消息传递给DefWindowProc
(2)lParam参数包含低位字的x坐标和高位字的y坐标(屏幕坐标)
客户区坐标和屏幕坐标的转换
ScreenToClient(hwnd,&pt);
ClientToScreen(hwnd,&pt);