- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络教室软件设计漫谈 庄秀丽 网络教室软件设计功能模型 WINDOWS消息 { Message structure } TMsg = packed record hwnd: HWND;//窗口句柄 message: UINT;//消息常量标识符 wParam: WPARAM;//32位消息的特定附加信息 lParam: LPARAM;//32位消息的特定附加信息 time: DWORD;//消息创建的时间 pt: TPoint;//消息创建时的鼠标位置 end; WINDOWS消息类型和来源 鼠标消息 键盘消息 窗口消息 用户自定义消息 (标准的Windows消息、通知消息、用户自定义消息) WINDOWS消息处理机制 WINDOWS的消息系统由3部分组成: 消息队列 消息循环 窗口过程 一条消息从产生到被一个窗口响应的流程: 网络教室中的消息处理机制 在网络教室的软件设计过程中,定义了的不少用户自定义消息,这些用户自定义消息和TCP/UDP通讯协议一起构成了教师机与学生机的通讯基础。 根据消息的用途将消息分为鼠标消息、键盘消息和控制消息 网络教室中鼠标键盘封锁遥控 封锁 教师机界面程序 学生机界面程序 合成消息 发送代理 接收消息 (作为普通控制消息发送) (安装钩子,屏 蔽系统鼠标键盘消息) 遥控 教师机界面程序 学生机界面程序 合成消息 处理消息 发送代理 接收代理 (安装键盘钩子, 截获系统的键盘消息, 合成键盘消息并发送) 窗口过程 窗口过程是一个回调函数,专门用来接收传递给窗口的消息,并对消息作出响应。 窗口过程接收到消息之后怎样进行处理,有两种可能,一是程序员编写了特定消息的处理代码,就直接调用消息的处理函数代码,二是对该消息没有特定的处理函数,就由DefWindowProc进行处理, DefWindowProc是缺省的窗口过程 消息循环 在32位的WINDOWS系统中,每个应用程序都有自己的消息队列,在应用程序的内部有一个消息循环,其代码如下: while (GetMessage(msg, NULL, 0, 0)) { TranslateMessage(msg); DispatchMessage(msg); } 当GetMessage()返回一条消息后,循环就将该消息传递给TranslateMessage()看看该消息是否来自键盘,如果是来自键盘的消息,则将原始键盘消息转化为WM_CHAR消息。 DispatchMessage()是确定应用程序中应该的到消息的窗口,并将消息传递给它,然后下一轮循环开始,直至收到WM_QUIT消息, GetMessage()返回False,循环停止,并终止应用程序。 用户自定义消息 有时候用户需要定义一些程序内部使用的消息,以区别于系统定义的消息,进行用户自定义的一些处理。 由于这些消息时用户自定义的,系统并不知道,因此这些消息只能靠PostMessage()或SendMessage()函数来进行发送。 用户自定义消息形式为WM_USER+N(100~$7FFF) 键盘消息(1) 用户对键盘进行操作时,会产生相应的键盘消息,系统把这些消息发送给对应的窗口 在message(…)单元定义TMsg结构中message所表示的键盘消息常量常见的有: WM_KEYDOWN = $0100;
文档评论(0)