windows程序设计08.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:17 大小:83KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

windows程序设计08.ppt

windows程序设计08.ppt

预览

免费试读已结束,剩余 7 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章键盘及鼠标的消息响应主要内容一、键盘输入的响应1、程序实例3、键盘消息3.1WM_KEYDOWN和WM_KEYUPLRESULTCALLBACKWindowProc(HWNDhwnd,//handletowindowUINTuMsg,//WM_KEYDOWNWM_KEYUPWPARAMwParam,//virtual-keycodeVK_F1LPARAMlParam//keydata);消息的处理过程主要是根据wParam中的键码进行处理。例:switch(uMsg){caseWM_KEYDOWN:switch(wParam){caseVK_LEFT://动作;return0;}}VK_LEFT25LEFTARROWkeyVK_UP26UPARROWkeyVK_RIGHT27RIGHTARROWkeyVK_DOWN28DOWNARROWkey(2)lParam信息在按键消息WM_KEYDOWN、WM_KEYUP中,wParam消息参数含有上面所讨论的虚拟键码,而lParam消息参数则含有对了解按键非常有用的其它信息。lParam的32位分为6个字段,如图所示。(3)切换键信息在处理按键消息时,可能需要知道是否按下了转换键(Shift、Ctrl和Alt)或开关键(CapsLock、NumLock和ScrollLock)。通过调用GetKeyState函数,就能获得此信息。SHORTGetKeyState(intnVirtKey);//virtual-keycodenVirtKeyVK_SHIFTshift键VK_CONTROLCTRL键VK_MENUALT键VK_CAPITALCapsLock键VK_LSHIFT左shift键VK_RSHIFT右shift键VK_LCONTROLVK_RCONTROLVK_LMENUVK_RMENU3.2字符消息WM_CHAR(1)消息顺序因为TranslateMessage函数从WM_KEYDOWN和WM_SYSKEYDOWN消息产生了字符消息,所以字符消息是夹在按键消息之间传递给窗口消息处理程序的。例如,如果CapsLock未打开,而使用者按下再释放A键,则窗口消息处理程序将接收到如下表所示的三个消息:如果按下Shift键,再按下A键,然后释放A键,再释放Shift键,就会输入大写的A,而窗口消息处理程序会接收到五个消息,如下表所示:(2)WM_CHAR消息LRESULTCALLBACKWindowProc(HWNDhwnd,//handletowindowUINTuMsg,//WM_CHARWPARAMwParam,//charactercode(TCHAR)LPARAMlParam//keydata);参数wParam不是虚拟键码。实际上,它是ANSI或Unicode字符代码。例:caseWM_CHAR:switch(wParam){case'a'://处理代码;break;default:return0;}二、鼠标输入的响应当Windows使用者移动鼠标时,Windows在显示器上移动一个称为「鼠标光标」的小位图。鼠标光标有一个指向显示器上精确位置的单图素「热点」。当提到鼠标光标在屏幕上的位置时,指的是热点的位置。Windows支持几种预先定义的鼠标光标,程序可以使用这些光标。IDC_ARROW的斜箭头(在WINUSER.H中定义)。热点在箭头的顶端。IDC_CROSS光标(在本章后面的BLOKOUT程序中有用到)的热点在十字交叉线的中心。IDC_WAIT光标是一个沙漏,通常用于指示程序正在执行。程序员也可以设计自己的光标。wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);下面是一些描述鼠标按键动作的术语:Clicking按下并放开一个鼠标按键。Double-clicking快速按下并放开鼠标按键两次。Dragging按住鼠标按键并移动鼠标。对三键鼠标来说,三个键分别称为左键、中键、右键。在Windows表头文件中定义的与鼠标有关的标识符使用缩写LBUTTON、MBUTTON和RBUTTON。双键鼠标只有左键与右键,单键鼠标只有一个左键。2.1、显示区域鼠标消息当鼠标移过窗口的显示区域时,窗口消息处理程序收到WM_MOUSEMOVE消息。当在窗口的显示区域中按下或者释放一个鼠标按键时,窗口消息处理程序会接收到下面这些消息:wParam的值指示鼠标按键以及Shift和Ctrl键的状态。鼠标消息响应实例:switch(message){caseWM_LBUTTOND