天天看點

MFC運作流程圖

C語言vs.MFC1

根據 《孫鑫vc++講座》視訊教程的講解,從執行原理上說,MFC的程式和正常C++語言的程式是完全一緻的。 C++中的main函數相當于MFC中的WinMain函數。

#include <iostream.h>
int x = 1;
main()
{
cout<<x<<endl;
}
           

如上述代碼, 像x這樣的全局變量在進入main函數前已經建立,并初始化。

建立一個MFC項目,命名為Test。

CTestApp::CTestApp()
{
	// 支援重新啟動管理器
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

	// TODO: 在此處添加構造代碼,
	// 将所有重要的初始化放置在 InitInstance 中
}

// 唯一的一個 CTestApp 對象
CTestApp theApp;
           

在CTestApp.cpp中定義全局變量theApp,它在WinMain()函數之前被定義。

MFC執行順序

以Test項目為例,MFC的執行順序如圖1所示。

圖1 MFC執行順序

需要說明的是, 對于MFC程式,MainFrame,View,Dialog等都是視窗。這些視窗的注冊與建立、顯示等要反複調用多次,一次隻能調用一個視窗 ,如圖2所示。

圖2 視窗執行順序

如何編寫MFC程式2

與普通的c / c ++應用程式不同,在該應用程式中,入口點是main,您可以完全控制執行流程。MFC應用程式是事件驅動的。您編寫的代碼是基于由于使用者與應用程式互動(例如,單擊按鈕,在文本框中輸入文本等)而發生的事件而執行的。當沒有互動時,應用程式将處于空閑狀态。

(1)最好的位置是OnInitDialog來放置您的初始化代碼。您可以在OnInitDialog中初始化所有成員變量。(請記住winMain是Windows應用程式的入口點。但是在MFC中,它被深埋在模闆代碼中。)

(2)添加消息處理程式以處理使用者操作,以便稍後執行您的核心程式。例如:如果對話框上有一個按鈕,則需要為該按鈕添加消息處理程式函數,當使用者單擊該按鈕時,該函數将被調用。使用類向導(https://msdn.microsoft.com/zh-cn/library/ee748520.aspx)可以輕松完成此操作。

  1. https://blog.csdn.net/husongchao/article/details/5063786 ↩︎
  2. https://stackoverflow.com/questions/44798930/what-is-the-entry-point-of-this-basic-mfc-dialogue-box-application ↩︎