键盘和鼠标的消息参数:
/********************** LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // WM_KEYDOWN WPARAM wParam, // virtual-key code LPARAM lParam // key data ); wParam 按键的虚拟键码,如果是WM_CHAR会被翻译成ASC编码。鼠标的则是其他按键消息,比如Ctrl。 Specifies the virtual-key code of the nonsystem key. lParam 附带信息,鼠标的常常是鼠标坐标。 Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table. ***********************/键盘消息 键盘按下,传递电信号,然后翻译成虚拟键码,可以自己定义。
WM_KEYDOWN,WM_KEYUP,按键按下弹起。可以按下多次弹起一次,但是弹起一次必然按下一次。 WM_SYSKEYDOWN,WM_SYSKEYUP,系统按键按下弹起 WM_CHAR,字符消息,由TranslateMessage函数翻译: 1.判断是不是WM_KEYDOWM消息 2.通过虚拟键码的设置判断是不是可见字符按键 3.如果是可见字符,则判断capslock是否按下,判断大小写。鼠标消息
WM_LBUTTONDOWN,WM_LBUTTONUP,鼠标左键按下弹起,一般成对出现,比如原窗口按下,移出窗口再弹起,原窗口则接收不到。 WM_RBUTTONDOWN,WM_LBUTTONUP,鼠标右键按下弹起 WM_MOUSEMOVE,光标移动 WM_LBUTTONDBLCLK,WM_RBUTTONDBLCLK,鼠标左右键双击 WM_MOUSEWHEEL,鼠标滚轮, wParam 低八位:其他按键的状态 高八位:附带滚轮偏移量,是120的倍数,正负表示方向,正向前,负向后。 lParam:鼠标坐标 双击消息:WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONDBLCLK定时器 定时器: WM_TIMER,精度是毫秒,但是准确度不够,原因是getmessage函数可能会先抓取别的消息。如果时间要求严格最好用线程。 消息参数: wParam,定时器ID lParam,定时器处理函数的指针
UINT_PTR SetTimer( HWND hWnd, // handle to window,定时器属于的窗口句柄。 UINT_PTR nIDEvent, // timer identifier UINT uElapse, // time-out value TIMERPROC lpTimerFunc // timer procedure,定时器处理函数指针,如果为NULL则去窗口中找处理函数。 ); BOOL KillTimer( HWND hWnd, // handle to window,句柄 UINT_PTR uIDEvent // timer identifier,定时器ID );