博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以消息为基础,以事件驱动之(message based, event driven)-- 《深入浅出MFC》
阅读量:6285 次
发布时间:2019-06-22

本文共 871 字,大约阅读时间需要 2 分钟。

  Windows 程序的进行系依靠外部发生的事件驱动。换句话说,程序不断等待(利用一个while 回路),等待任何可能的输入,然后做判断,然后再做适当的处理

  上述的「输入」是由操作系统捕捉到之后,以消息形式(一种数据结构)进入程序之中。

  操作系统通过USER模块(WINDOWS三大模块之一)捕捉外围设备(如键盘和鼠标)所发生的事件。

  应用程序获得的2类输入:

    由硬件装置所产生的消息(如鼠标移动或键盘被按下),放在系统队列(system queue)

    由Windows 系统或其它Windows 程序传送过来的消息,放在程序队列(application queue)中。

  以应用程序的眼光来看,消息就是消息,来自哪里或放在哪里其实并没有太大区别,反正程序调用GetMessage API 就取得一个消息,程序的生命靠它来推动。

所有的GUI 系统,包括UNIX的X Window 以及OS/2 的Presentation Manager,都像这样,是以消息为基础的事件驱动系统。

  可想而知,每一个Windows 程序都应该有一个回路如下:

1 MSG msg; 2 while (GetMessage(&msg, NULL, NULL, NULL)) { 3 TranslateMessage(&msg); 4 DispatchMessage(&msg); 5 } 6  7 // 以上出现的函数都是Windows API 函数消息,也就是上面出现的MSG 结构,其实是Windows 内定的一种资料格式: 8 /* Queued message structure */ 9 typedef struct tagMSG10 {11 HWND hwnd;12 UINT message; // WM_xxx,例如WM_MOUSEMOVE,WM_SIZE...13 WPARAM wParam;14 LPARAM lParam;15 DWORD time;16 POINT pt;17 } MSG;

 

 

转载地址:http://senva.baihongyu.com/

你可能感兴趣的文章
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>