MFC和QT的数据传输有些是依赖于对话框和控件的,而这又涉及到一个很重要的机制:MFC消息映射机制(QT的事件其实跟这个差不多,QT是把所有的事件都封装为QEvent的子类了),之前找资源的时候看过黑马的一张图片,还挺不错的:
上面几个步骤的文字说明:
①操作系统为每个对话框默认建立一个消息队列,这个消息队列肯定是在代码里找不到的,但它确实存在;
②每个对话框的消息队列不停地接收消息;
③当收到消息之后,会经历:TranslateMessage→DispatchMessage的过程,把消息翻译之后再交给操作系统,前面博客里的PreTranslateMessage是在TranslateMessage之前发生的;
④由操作系统拿到对话框发来的消息后,去执行相应的回调函数。
对话框可以接收来自用户的鼠标/键盘等事件,并最终会由操作系统来执行回调函数,我刚开始实习的时候写QT,后来写MFC以为消息映射和QT的信号与槽机制是一个东西,结果发现这俩只是用法相似,压根不是一回事,信号与槽是类和对象的应用体现,真正对标消息映射机制的是QT事件机制。