- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本概念 Windows是一种消息驱动的操作系统 Windows等待用户的动作(事件)以便作出反应, 所以也称为“事件驱动”的操作系统 什么是事件? eg:键盘输入某数据、点击file?save保存文件、点击 Exit按钮退出某程序….. 操作系统的每一部分与其他部分之间都可以通过消息进行通信 应用程序与操作系统之间的许多交互也通过消息完成 例如:针对某程序的键盘输入时, Windows系统向该程序发送输入消息, 该程序通过处理这个消息获得键盘输入的信息. 几个常用消息 单击鼠标左键产生消息 WM_LBUTTONDOWN 放开鼠标左键产生消息 WM_LBUTTONUP 单击鼠标右键产生消息 WM_RBUTTONDOWN 放开鼠标右键产生消息 WM_RBUTTONUP CreateWindows函数产生消息 WM_CREATE 关闭窗口产生消息 WM_CLOSE //0x0010 窗口、窗口句柄 一个windows应用程序,至少有一个窗口 利用窗口,windows应用程序可以和用户交互 例如:显示输出,接收输入…. 窗口、窗口句柄 Windows程序中,窗口通过 窗口句柄来标识 对窗口进行操作,必须得到该窗口的窗口句柄 Windows程序中的各种资源(窗口、光标、图标、画刷…)都有句柄,要操作必须获得句柄 句柄:一种标识号,系统在创建各种资源时,为它们分配内存,并返回标识这些资源的标识号 异步事件通知I/O模型 (WSAAsyncSelect模型) Select模型: 循环的去检查,看是否有数据 ... 接收/发送... 程序自己去看 WSAAsyncSelect模型: 别人(操作系统)来通知你 WSAAsyncSelect返回0;否则返回SOCKET_ERROR,这时可用WSAGetLastError来获取错误码.?事实上,成功发送一次消息,通知机制会暂停工作直到有重新激活消息通知机制到来.才可重新激活事件. 水平触发:FD_READ,FD_OOB和FD_ACCEPT 即重新激活,需要引发消息发送的条件.?边缘触发:FD_QOS,FD_GROUP_QOS等. void CXXXDlg::OnServerMsg(WPARAM wParam,LPARAM lParam){?????? SOCKET sock = (SOCKET) wParam;?????? if(WSAGETSELECTERROR(lParam)){???????????? ErrorProcess();???????????? return;}switch(WSAGETSELECTEVENT(lParam)){ case FD_READ:????????? ReadDate(sock);??? // 读数据并进行相应处理????????? break; case FD_CLOSE:????????? Finsish(sock);??????? //套接口关闭工作????????? break; default;????????? break;}} 其中函数会接受到两个参数wParam 和 lParam。wParam参数指明网络事件套接口,多个套接口指定同一个用户消息,那么就需要根据wParam判断到底是哪个套接口待处理。lParam参数包含两信息:低字指定发生网络事件,高字包含可能出现错误带代码。 在Windows sockets 应用程序中,当接收到网络事件消息时,在该函数内执行下面步骤 : (1) 读取lParam参数高字节,判断是否发生了一个网络错误事件。可以使用 WSAGETSELECTERROR宏。 (2) 如果应用程序发现套接字上没有发生任何错误,则读取Iparam低字节,检查到底是发生了什么网络事件。可以使用WSAGETSELECTEVENT宏。 WSAGETSELECTERROR和WSAGETSELECTEVENT宏声明如下: #define WSAGETSELECTEVENT(lParam) LOWORD(lParam) #define WSAGETSELECTERROR(lParam) HIWORD(lParam) WSAAsynSelect在MFC中使用流程 (1)使用#define语句定义套接口网络事件设置用户消息值,一般为WM_USER+N形式。(2)调用WSAAsynsSelect函数,为套接口设定网络事件-用户消息-消息接收窗体的对应关系。(3)在消息接收窗体的代码的消息映射模块中,加入ON_MESSAGE宏,设定用户消息的处理函数。(4)编写用户处理函数,该函数应该首先使
您可能关注的文档
最近下载
- 蒸压加气混凝土砌块施工技术课件.ppt VIP
- 沥青路面再生利用项目可行性研究报告项目建议书.docx
- 医学课件-老年卧床患者压力性损伤的预防和护理进展.pptx
- 电力系统经济学原理习题解答 全.doc VIP
- 数据中心机房工程施工组织设计方案.pptx VIP
- 传统文化与修身(鲁东大学)知到智慧树章节答案.docx VIP
- 湖南文艺出版社(2024)新教材小学二年级音乐上册第五课《草原就是我的家》精品课件.pptx VIP
- 益智课堂数字华容道教学课件.pptx VIP
- (2025秋新版)部编版二年级道德与法治上册《第8课 我为班级作贡献》教案.docx VIP
- 尼科尔森《微观经济理论-基本原理与扩展》(第9版)课后习题详解(第18章--不确定性和风险厌恶).doc VIP
文档评论(0)