键盘与鼠标作为输入设备,是用户与应用程序进行交互的重要手段。键盘上的每个键对应唯一的一个键值,称为扫描码。当用户按下一个键或者组合键时,将产生一条消息,系统将该消息送入对应程序的消息队列中,应用程序再通过消息循环中的GetMessage()函数从应用程序当前窗口所属的消息队列中获得该消息,然后调用DispatchMessage()函数将消息发送到指定的窗口过程函数中处理。鼠标的工作方式与键盘相似,MiniGUI对鼠标消息的处理方式也与对键盘消息的处理方式相似。
当用户按下一个键或者组合键时,将产生MSG_KEYDOWN或MSG_SYSKEYDOWN键盘消息;当按键被释放时,将产生MSG_KEYUP或MSG_SYSKEYUP键盘消息。这些消息的wParam参数保存按键的扫描码,1Param参数保存该消息的附加信息,如是否同时按了<Ctrl>键等。
当按键能产生可见字符时,则除产生键盘消息外,还产生字符消息。消息循环中的TranslateMessage()函数负责判断按键是否产生了可见字符。如果是可见字符,则该函数将键盘消息转化为字符消息,以便应用程序进行相应处理。字符消息为MSG_CHAR或MSG_SYSCHAR。字符消息的wParam参数中保存的是按键的ASCII码,1Param参数中保存的附加信息为按键是否同时按了<Shift>键。
鼠标的动作方式比键盘要丰富得多,它可以移动、单击和双击,所处位置可以是客户区,也可以是非客户区。所以,鼠标消息的种类也比键盘消息多。MiniGUI定义了7个客户区鼠标消息和7个非客户区鼠标消息。一般地,应用程序只处理客户区鼠标消息。客户区鼠标消息见表6-2。(www.xing528.com)
表6-2 客户区鼠标消息
鼠标消息的wParam参数保存附加信息,判断击键时键盘上的<Shift>键是否被同时按下。1Param参数保存鼠标在当前客户区的位置坐标。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。