SDK、MFC、QT界面生成的机制
1、SDK进行界面设计的机制
(1)设计窗口类
(2)注册窗口类
(3)创建窗口
(4)显示及更新窗口
(5)消息循环,操作系统接收到应用程序的窗口消息,将消息投递到队列中,通过GetMessage()函数来取得消息,然后TranslateMessage进行消息格式转换,通过DispatchMessage函数分派一个消息到窗口过程。然后通过窗口过程函数,switch函数进行消息判断从而确定是何种消息,然后进行相关的处理。
2、MFC的消息映射机制
ON_WM_LBUTTONDOWN是一个消息映射宏,这个宏能见其和一个OnLButtonDown函数相关联。
三幅图说明问题:
(1)
头文件定义消息映射函数
(2)
将消息映射和一个map联系在一起。
(3)具体的消息映射函数的实现。
只要遵循上述步骤的话,就可以实现消息的相应处理,叫做消息映射的机制,具体怎么来实现呢?MFC在后台维护了一个窗口句柄和c++对象指针的对照表,收到消息的时候,确定消息和哪个窗口句柄有关,然后通过对照表找到与之相关的c++对象指针,然后指针传递给应用程序框架窗口类的基类,之后调用windowproc,由OnWndMsg来进行消息响应,之后就是根据来的消息先做判断之后在进行消息响应函数的调用。
(3)
对于QT而言,明显采用信号和槽的概念。每一条信号传过来的时候,会和槽联系在一起。多个信号可以对应一个槽,一个信号也可以传递到多个槽:
QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(mySlot()));
这就是将信号和槽联系在一起的机制,重要能够使emit发送信号,就会到达与之关联的槽,从而进行相关的处理。
SDK、MFC、QT界面生成的机制的更多相关文章
- VJGUI消息设计-兼谈MFC、QT和信号/槽机制
星期六下午4点,还在公司加班.终于写完了下周要交工的一个程序. 郁闷,今天这几个小时写了有上千行代码吧?虽然大部分都是Ctrl-C+Ctrl-V,但还是郁闷. 作为一个有10年经验的MFC程序员,郁闷 ...
- Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
一 闲谈: 熟悉Window下编程的小伙伴们,对其消息机制并不陌生, 话说:一切皆消息.它可以很方便实现不同窗体之间的通信,然而MFC库将很多底层的消息都屏蔽了,尽管使用户更加方便.简易地处理消息,但 ...
- 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现
目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...
- 痞子衡嵌入式:MCUXpresso IDE下SDK工程导入与workspace管理机制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程导入与workspace管理机制. MCUXpresso IDE是恩智浦软件团队倾注很大心血研发 ...
- Qt 界面使用自己定义控件 "提升为"
1.效果图 我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色.这个QLabel会变成什么颜色. 2.ColorLab ...
- OSG嵌入QT(QT界面使用Qt Designer编辑)
本文主要内容:使用Qt Designer编辑好QT界面后,将OSG中的ViewerWidget嵌入到QT的Widget中. 在VS中嵌入QT工具,建立QT GUIApplication后,打开自动生成 ...
- C++解析头文件-Qt自动生成信号声明
目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK, ...
- Qt的内存管理机制
当我们在使用Qt时不可避免得需要接触到内存的分配和使用,即使是在使用Python,Golang这种带有自动垃圾回收器(GC)的语言时我们仍然需要对Qt的内存管理机制有所了解,以更加清楚的认识Qt对象的 ...
- 在ROS中使用QT界面
在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Te ...
随机推荐
- VS2012下基本类型大小
- spark统计
http://www.myexception.cn/sql/2004512.html http://blog.csdn.net/ssw_1990/article/details/52220466 ht ...
- Python3基础 index 返回一个元素在列表中第一次出现的索引值
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- CSS边距---盒子模型
CSS盒子模型 盒子模型主要是有margin(外边距).border(边框).padding(内边距).content(内容)组成,这些属性我们可以把它转移到我们日常生活中的盒子上来理解,日常生活中所 ...
- jq 移除包含某个字符串的类名js
el.removeClass (function (index, css) { return (css.match (/(^|\s)star\S+/g) || []).join(' ');//移除以“ ...
- Claims Identity
using System;using System.Collections.Generic;using System.Linq;using System.Security.Claims;using S ...
- 【CSU1812】三角形和矩形 【半平面交】
检验半平面交的板子. #include <stdio.h> #include <bits/stdc++.h> using namespace std; #define gg p ...
- 学习mongo系列(八)密码与权限
一.设置密码及用户角色[1] > db.createUser(... {... user: "maxh",... pwd: "123",... roles ...
- Git实现从本地添加项目到远程仓库
Git是现在最流行的版本控制系统之一了,今天也试试了,成功了上传了远程仓库,接下来看看我是怎么做的. (ps:七牛抓取不到图片,请移步:http://blog.csdn.net/u011043843/ ...
- 【转载】CSS规范
原文地址:http://www.cnblogs.com/whitewolf/p/4491707.html 目录 HTML 语法 HTML5 doctype 语言属性(Language attribut ...