SDK、MFC、QT界面生成的机制

时间:2023-03-08 22:28:09

1、SDK进行界面设计的机制

(1)设计窗口类

(2)注册窗口类

(3)创建窗口

(4)显示及更新窗口

(5)消息循环,操作系统接收到应用程序的窗口消息,将消息投递到队列中,通过GetMessage()函数来取得消息,然后TranslateMessage进行消息格式转换,通过DispatchMessage函数分派一个消息到窗口过程。然后通过窗口过程函数,switch函数进行消息判断从而确定是何种消息,然后进行相关的处理。

2、MFC的消息映射机制

ON_WM_LBUTTONDOWN是一个消息映射宏,这个宏能见其和一个OnLButtonDown函数相关联。

三幅图说明问题:
(1)SDK、MFC、QT界面生成的机制

头文件定义消息映射函数

(2)SDK、MFC、QT界面生成的机制

将消息映射和一个map联系在一起。

(3)具体的消息映射函数的实现。

SDK、MFC、QT界面生成的机制

只要遵循上述步骤的话,就可以实现消息的相应处理,叫做消息映射的机制,具体怎么来实现呢?MFC在后台维护了一个窗口句柄和c++对象指针的对照表,收到消息的时候,确定消息和哪个窗口句柄有关,然后通过对照表找到与之相关的c++对象指针,然后指针传递给应用程序框架窗口类的基类,之后调用windowproc,由OnWndMsg来进行消息响应,之后就是根据来的消息先做判断之后在进行消息响应函数的调用。

(3)

对于QT而言,明显采用信号和槽的概念。每一条信号传过来的时候,会和槽联系在一起。多个信号可以对应一个槽,一个信号也可以传递到多个槽:

QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(mySlot()));

这就是将信号和槽联系在一起的机制,重要能够使emit发送信号,就会到达与之关联的槽,从而进行相关的处理。