windows序设计08.pptVIP

  • 2
  • 0
  • 约3.36千字
  • 约 17页
  • 2017-05-15 发布于贵州
  • 举报
windows序设计08

第4章 键盘及鼠标的消息响应 董本志 主要内容 键盘输入的响应 鼠标消息的响应 键盘与鼠标的组合输入 * 一、键盘输入的响应 1、程序实例 2、Windows程序是如何获得键盘输入的 键盘输入以消息的形式传递给程序的窗口消息处理程序。 Windows用八种不同的消息来传递不同的键盘事件。程序可以忽略其中至少一半的消息而不会有任何问题。并且,在大多数情况下,这些消息中包含的键盘信息会多于程序所需要的。处理键盘的部分工作就是识别出哪些消息是重要的,哪些是不重要的。 3、键盘消息 3.1 WM_KEYDOWN 和 WM_KEYUP LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // WM_KEYDOWN WM_KEYUP WPARAM wParam, // virtual-key code VK_F1 LPARAM lParam // key data ); 消息的处理过程主要是根据wParam中的键码进行处理。 例: switch (uMsg) { case WM_KEYDOWN: switch(wParam) { case VK_LEFT: //动作; return 0; } } VK_LEFT 25 LEFT ARROW key VK_UP 26 UP ARROW key VK_RIGHT 27 RIGHT ARROW key VK_DOWN 28 DOWN ARROW key (1)虚拟键码的定义 虚拟键码保存在WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP消息的wParam参数中。此代码标识按下或释放的键。 (2)lParam信息 在按键消息WM_KEYDOWN、WM_KEYUP中,wParam消息参数含有上面所讨论的虚拟键码,而lParam消息参数则含有对了解按键非常有用的其它信息。lParam的32位分为6个字段,如图所示。 (3)切换键信息 在处理按键消息时,可能需要知道是否按下了转换键(Shift、Ctrl和Alt)或开关键(Caps Lock、Num Lock和Scroll Lock)。通过调用GetKeyState函数,就能获得此信息。 SHORT GetKeyState( int nVirtKey); // virtual-key code nVirtKey VK_SHIFT shift键 VK_CONTROL CTRL键 VK_MENU ALT键 VK_CAPITAL CapsLock键 VK_LSHIFT 左shift键 VK_RSHIFT 右shift键 VK_LCONTROL VK_RCONTROL VK_LMENU VK_RMENU 3.2 字符消息 WM_CHAR (1)消息顺序 因为TranslateMessage函数从WM_KEYDOWN和WM_SYSKEYDOWN消息产生了字符消息,所以字符消息是夹在按键消息之间传递给窗口消息处理程序的。例如,如果Caps Lock未打开,而使用者按下再释放A键,则窗口消息处理程序将接收到如下表所示的三个消息: 如果按下Shift键,再按下A键,然后释放A键,再释放Shift键,就会输入大写的A,而窗口消息处理程序会接收到五个消息,如下表所示: 注意:Shift键本身不产生字符消息。 (2)WM_CHAR消息 LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UI

文档评论(0)

1亿VIP精品文档

相关文档