我喜欢蓝天,也喜欢雨天。
分类: Windows平台
2013-08-16 15:16:38
键盘
1.键盘消息分为击键和字符。
2.系统击键和非系统击键。
WM_KEYDOWN WM_KEYUP
WM_SYSKEYDOWN WM_SYSKEYUP
3.虚拟键码保存在WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN WM_SYSKEYUP消息的wParam参数中。为了实现与设备无关。
case WM_KEYDOWN:
switch(wParam)
{
case VK_HOME:
.....
}
4.lParam的32位分为6个域:重复计数,OEM扫描码,扩展键标志,环境代码,键的先前状态,转换状态。
5.插入符:
CreateCaret 创建与窗口有关的插入符
SetCaretPos 在窗口中设置插入符的位置
ShowCaret 显示插入符
HideCaret 隐藏
DestroyCaret 撤销
鼠标
1.查看鼠标是否存在:fMouse = GetSystemMetrics(SM_MOUSEPRESENT);
确定所安装鼠标的个数:cButton = GetSystemMetrics(SM_CMOUSEBUTTONS);
2.当定义窗口类结构时指定特定窗口的默认光标:wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
3.客户区鼠标消息:
按下 释放 双击键
左 WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK
中 WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK
右 WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK
lParam 值含有鼠标的位置
x = LOWORD(lParam);
y = HIWORD(lParam);
4.wParam 和 MK_LBUTTON进行按位与,来确定是否按下了左键。
5.非客户区鼠标消息
按下 释放 双击键
左 WM_NCLBUTTONDOWN WM_NCLBUTTONUP WM_NCLBUTTONDBLCLK
中 WM_NCMBUTTONDOWN WM_NCMBUTTONUP WM_NCMBUTTONDBLCLK
右 WM_NCRBUTTONDOWN WM_NCRBUTTONUP WM_NCRBUTTONDBLCLK
lParam参数包含低位字的x坐标和高位字的y坐标,但是是屏幕坐标。可用下面函数转化:
ScreenToClient(hwnd, &pt);
ClientToScreen(hwnd, &ps);