- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows程序设计的关键技术 事件驱动机制编程 组件对象模型 MFC 上海大学机电工程与自动化学院 雷电 消息驱动机制 Windows程序和传统程序的根本区别: 传统程序是通过调用系统函数来获得用户输入,而Windows程序是通过操作系统发送的消息来处理用户输入。 不了解事件编程就无法深入Windows程序和Web设计的殿堂。 面向对象的编程,要执行一个任务有两种启动方式: 客户/服务器模式。 委托/事件模式。 上海大学机电工程与自动化学院 雷电 事件概念 事件字面意义:事件可以是你认为的任何可能发生的事情。 事件:是事件源中的方法,该方法在被调用时生成事件,本质上是一种特殊的函数指针,通过调用事件方法“激发”该事件。 事件源(事件发生器):是定义事件和包含事件的对象。 事件接收器:是接收事件的对象。 事件处理程序:是事件接收器中接收事件的方法。 挂钩事件(定阅事件):是指将事件与事件处理程序相关联。 解除挂钩事件(撤销定阅事件) :是指使事件与事件处理程序分离。 上海大学机电工程与自动化学院 雷电 鼠标 事件处理程序: OnClick 客户 定阅鼠标事件 回调(通知) 客户 事件处理程序: OnSubmit 定阅鼠标事件 回调(通知) 事件发生器 事件 ButtonClick 最重要的意义是:事件源模块不用关心谁来响应事件,使系统间的模块间的关系是一种松散的关系。 上海大学机电工程与自动化学院 雷电 事件的处理主要有两种方法 委托式的事件处理模式(函数回调,函数指针的集合) 类的层次体系的虚函数覆盖。(多态性) 上海大学机电工程与自动化学院 雷电 事件机制的实现 VC++6.0没有提供支持:虽然C 语言所具有的函数回调对此非常适用,而 C++ 却始终缺少这种针对对象方法的回调。函数指针只能使用全局函数或静态函数。 例: typedef void (*EventFunc)(int x,int y ); EventFunc onBnEvent[ ] = ; onBnEvent [0]=myOnBn; myOnBn(int x,int y){….} onBnEvent [0](3 , 140 ); onBnEvent [1](3, 50 ); 声明委托(声明事件签名) 定义事件对象 事件源引发事件 处理事件 (全局函数) 订阅事件 上海大学机电工程与自动化学院 雷电 VC++7.0提供下面的关键字支持面向对象的事件编程 event_source 、event_receiver __event 、 __hook 、__unhook VC++8.0 提供下面的关键字支持托管代码的事件编程 delegate 、event .NET对不同类型的对象预定义了大量事件 订阅事件+= 取消订阅 -= VC++9.0 STL 增加了 function 类模板,bind函数,以支持本地的面向对象的事件编程 上海大学机电工程与自动化学院 雷电 例:.NET事件机制编程 using namespace System; delegate void Del(int, float); ref class EventSource { public: event Del^ E; void fire(int i, float f) { E(i, f); } }; ref class EventReceiver { public: void Handler(int i , float f) { Console::WriteLine(Receive:{0},{1},i,f); } }; int main () { EventSource ^ es = gcnew EventSource(); EventReceiver^ er = gcnew EventReceiver(); es-E += gcnew Del(er, EventReceiver::Handler); es - fire(1, 3.14); } 输出结果: Receive : 1 , 3.14 事件对象 声明委托(声明事件签名) 事件响应成员函数 创建对象 Hook事件 激发事件 上海大学机电工程与自动化学院 雷电 标准 C++ 库的扩展 (新) #include iostream #include vector #include functional using namespace std; using namespace std::tr1; using namespace std::tr1::placeholders; c
您可能关注的文档
- 第6章_80C51单片机的系统扩展重点.ppt
- 道岔设备故障处理武广剖析.doc
- 第6章_抽象类与接口重点.ppt
- 施工安全危险源检查清单重点.docx
- 第6章_利用数组处理批量数据重点.ppt
- 第10课近代社会的曙光重点.ppt
- 施工单位工作情况汇正重点.doc
- 施工单位资质分类大全重点.doc
- 第6章_面向对象的基础--类重点.ppt
- 车险理赔基础知识剖析.ppt
- 2025年1月四川省普通高等学校招生考试适应性测试(八省联考)政治(四川).docx
- 2025年1月四川省普通高等学校招生考试适应性测试(八省联考)历史(四川).docx
- 2025年1月四川省普通高等学校招生考试适应性测试(八省联考)地理(四川).docx
- 2025届三湘名校教育联盟五市十校教研教改共同体高三2月入学大联考化学试题.docx
- “天一大联考·齐鲁名校教研共同体“2024-2025学年(下)高三年级开学质量检测 数学试题及答案.docx
- 湖北省高中名校联盟2025届高三第三次联合测评日语试卷.docx
- 湖北省高中名校联盟2025届高三第三次联合测评 英语试卷.docx
- 湖北省高中名校联盟2025届高三第三次联合测评 英语答案.docx
- 湖北省高中名校联盟2025届高三第三次联合测评 物理答案.docx
- 湖北省高中名校联盟2025届高三第三次联合测评 生物答案.docx
最近下载
- 2024年(新高考2卷)数学第19题 教师比赛说课课件.pptx
- 广州市中考:2024年-2022年《语文》考试真题与参考答案.pdf
- 带头增强党性、严守纪律、砥砺作风等四个方面存在问题及整改材料.docx VIP
- 《保护眼睛》大班教案.pdf VIP
- 2022年皖北卫生职业学院单招综合素质题库及答案解析.docx
- 2022年高考真题——英语(全国乙卷).pdf VIP
- 摄影入门课件课件.pptx
- 2025年单招职业技能测试试卷(二).pdf VIP
- 2024廊坊市广阳区爱民东道街道社区工作者招聘考试真题题库及答案.docx VIP
- 《新能源汽车技术》课件——第二章 动力电池.pptx VIP
文档评论(0)