第6章 Windows应用程序对键盘与鼠标的响应讲义.ppt

第6章 Windows应用程序对键盘与鼠标的响应讲义.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
菜单、滚动条 工具条和标题条等处 不由应用程序处理而是送往函数DefWindowProc 用户区以外的地方产生的鼠标事件 产生一个非用户区鼠标消息 非用户区的鼠标消息 由于鼠标移动的随机性,如果要使某一个窗口能不间断地捕获鼠标消息,就必须对鼠标加以捕获。 SetCapture(hWnd):可以向句柄为hWnd的窗口发送所有的鼠标消息 调用SetCapture()函数 一旦从窗口捕获了鼠标, 系统的键盘功能就暂时失 效,其它窗口也无法得到 鼠标消息 当该窗口不再需要捕获鼠标消息时,应及时调用ReleaseCapture()以释放鼠标,否则,其他窗口无法接收鼠标信息。 鼠标消息的捕获 【练习2】鼠标输入示范程序,本例介绍如何响应鼠标信息、并改变光标形状等用法,用户在窗口的不同区域移动鼠标时,光标将显示如下图所标识的不同箭头的形状 6.4 鼠标应用程序实例 (50,50) (350,50) (150,50) (50,150) (350,350) (50,350) //消息处理函数 long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) { PAINTSTRUCT ps; HDC hdc; TEXTMETRIC tm; HBRUSH hbrush; HPEN hpen; HCURSOR hCursor; char str[15]; static int x,y; //定义表示鼠标的变量 switch(iMessage) //消息处理 { case WM_MOUSEMOVE: //处理鼠标移动消息 x=LOWORD(lParam); //取得鼠标所在位置在工作区中的坐标值 y=HIWORD(lParam); //当在左上角为(50,50),右下角为(350,350)确定的矩形区域中时,改变鼠标的形状 if(x=50x=350y=50y=350) { if(x=50x=150y=50y=150) { //加载一个“十”字型光标 hCursor=LoadCursor(NULL,IDC_CROSS); //设置当前光标为上句中定义的十字型光标 SetCursor(hCursor); } if(x=150x=250y=50y=150) { //加载一个东西南北箭头型光标 hCursor=LoadCursor(NULL,IDC_SIZEALL); //设置当前光标为上句中定义的东西南北箭头型光标 SetCursor(hCursor); } if(x=250x=350y=50y=150) { //加载一个圆圈带一斜线型光标 hCursor=LoadCursor(NULL,IDC_NO); //设置当前光标为上句中定义的圆圈带一斜线型光标 SetCursor(hCursor); } if(x=50x=150y=150y=250) { //加载一个用于改变窗口对角线大小的双箭头型光标 hCursor=LoadCursor(NULL,IDC_SIZENESW); SetCursor(hCursor); //设置当前光标为上句中定义的光标 } if(x=150x=250y=150y=250) { //加载光标为改变窗口上下大小的双箭头型光标 hCursor=LoadCursor(NULL,IDC_SIZENS); SetCursor(hCursor); } if(x=250x=350y=150y=250) { //加载一个用于改变窗口对角线大小的双箭头型光标 hCursor=LoadCursor(NULL,IDC_SIZENWSE); SetCursor(hCursor); } if(x=50x=150y=250y=350) { //加载一个用于改变窗体左右方向上大小的双箭头型光标 hCursor=LoadCursor(NULL,IDC_SIZEWE); SetCursor(hCursor); } if(x=150x=250y=250y=350) { //定义一个方向向上的箭头型光标 hCursor=LoadCursor(NULL,IDC_UPARROW); SetCursor(hCursor); } if(x=250x=350y=250y=350) { //加载一个用于表示系统忙的光标

文档评论(0)

taotao0a + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档