SDK、MFC、QT界面生成的机制
SDK、MFC、QT界面生成的机制
https://www.cnblogs.com/halosus/p/5658125.html
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发送信号,就会到达与之关联的槽,从而进行相关的处理。