亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

MFC程序執行過程深入剖析

2020-01-26 15:21:08
字體:
來源:轉載
供稿:網友

本文較為詳細的分析了VC++程序設計的MFC程序執行過程,有助于加深對MFC程序運行原理的理解。分享給大家供大家參考之用。具體分析如下:

一 MFC程序執行過程剖析

1)我們知道在WIN32API程序當中,程序的入口為WinMain函數,在這個函數當中我們完成注冊窗口類,創建窗口,進入消息循環,最后由操作系統根據發送到程序窗口的消息調用程序的窗口函數。而在MFC程序當中我們不在能找到類似WinMain這樣的程序入口,取而代之的是一系列派生類的聲明和定義以及一個沖CWinApp類派生而來的類的全局對象。CWinApp類被稱之為應用程序對象,在一個MFC程序當中只允許有一個應用程序對象。由于CWinApp的派生對象是全局的,因此這個對象的構造函數會在所有的其他代碼運行之前被調用,而由于CWinApp類當中包含了HWND、HINSTANCE等句柄的存在,其構造函數就執行了對這些成員數據的初始化操作,這里的所謂初始化僅僅是把所有的句柄對象賦值為NULL。

2)在調用完CWinApp的構造函數以后由連接器向程序內自動鏈接的AfxWinMain函數將被調用,而這個函數可以被看作MFC程序的入口函數。在這個函數當中調用全局AfxGetApp()函數獲得應用程序對象,這時將調用AfxInit全局函數,這個函數的功能是使用操作系統傳遞給AfxWinMain函數的參數初始化應用程序對象當中的相關句柄數據成員。

3)之后AfxWinMain函數調用CWinApp::InitApplication成員函數,這個成員函數用來初始化應用程序對象當中的關于文檔部分的內容。

4)隨后調用CWinApp::InitInstance成員函數,在這個成員函數當中,使用new操作在堆上聲明一個框架窗口對象,由此導致框架窗口對象的構造函數被調用,在框架窗口構造函數當中調用Create函數來創建窗口,而調用的Create函數一般將WNDCLASS參數設置成NULL,這樣就由MFC內部調用PreCreateWindow函數,在這個函數當中由MFC注冊幾個默認的WNDCLASS供框架窗口的Create使用。這時程序控制權交還給CWinApp::InitInstance成員函數內部,由這個函數調用CWnd::ShowWindow顯示窗口并且調用CWnd::UpdateWindow向窗口發送WM_PAINT消息。調用完CWinApp::InitInstance成員函數后由AfxWinMain函數調用CWinApp::Run成員函數,并由這個函數來創建和處理消息循環,并且在沒有消息的時候處理OnIdle空閑處理。至此整個程序的創建過程完成。

5)在程序的運行過程當中,由操作系統源源不斷的發送消息給應用程序,并且由CWinApp::Run當中的消息循環處理并且分發給相關的窗口對象的DefWindowProc成員函數,并由這個成員函數查詢窗口對象的消息映射表,如果查到對應項,則由登記在消息映射表當中的類成員函數處理,否則則按照Message Route當中的順序象父層類發送。

6)在消息運行結束,用戶按下關閉按鈕后,操作系統向程序發送WM_CLOSE消息,默認狀況下程序調用DestoryWindow并且發送WM_DESTORY消息,應用程序接受到這個消息以后的默認操作是調用PostQuitMessage函數,由這個函數發送WM_QUIT消息。當程序對象接受到WM_QUIT消息后消息循環結束,由AfxWinMain函數調用AfxTerm函數清理程序使用過的資源并且結束整個程序。

小結:以上的所有描述涵蓋了一個程序從開始、運行到結束的所有過程。 相信大家有點暈點了吧,實際編程中沒有必要深刻理解這么多,這些大都是由MFC內部自動幫我們完成的。實際MFC編程過程中,其實懂得MFC程序中各個函數的執行流程即可。有時候過于追究MFC細節會白白浪費我們的精力,應該將主要精力放在使用MFC解決實際問題上。

二 VC6中SDI程序的執行流程

下面以VC6中的sdi工程為例,通過給每個函數前設置斷點后調式執行,可以看出MFC的SDI的執行流程。記錄如下,希望對MFC執行有疑惑的人有幫助。

1)CSdiApp theApp;          //sdi.cpp
2)CSdiApp::CSdiApp()             //sdi.cpp
3)BOOL CSdiApp::InitInstance()         //sdi.cpp
4)CSdiDoc::CSdiDoc()                   //sdiDoc.cpp
5)CMainFrame::CMainFrame()          //MainFrm.cpp
6)BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)    //MainFrm.cpp
7)int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)    //MainFrm.cpp
8)CSdiView::CSdiView()                     //sdiView.cpp
9)BOOL CSdiView::PreCreateWindow(CREATESTRUCT& cs)         //sdiView.cpp
10)BOOL CSdiDoc::OnNewDocument()                //sdiDoc.cpp
11) void CSdiView::OnDraw(CDC* pDC)                //sdiView.cpp
// ---------------- 關閉窗口后-------------------------------------
12) CSdiView::~CSdiView()
13) CMainFrame::~CMainFrame()
14) CSdiDoc::~CSdiDoc()

感興趣的朋友可以采用斷點調試測試一下SDI程序的執行流程,以加深對MFC運行原理的理解,從而更好的掌握Windows程序設計。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品嫩草影院久久| 国产91色在线|| 上原亚衣av一区二区三区| 欧美日韩精品国产| 欧美专区第一页| 亚洲图片制服诱惑| 日韩性xxxx爱| 欧美黑人极品猛少妇色xxxxx| 国产精品视频永久免费播放| 久久久久久国产三级电影| 亚洲色图综合久久| 亚洲亚裔videos黑人hd| 在线日韩中文字幕| 26uuu亚洲伊人春色| 久久韩剧网电视剧| 亚洲欧美制服另类日韩| 成人中文字幕在线观看| 在线播放日韩专区| 日本久久91av| 欧美性猛交xxxx久久久| 欧美国产日韩免费| 国产成人精品亚洲精品| 亚洲午夜久久久久久久| 97精品视频在线| 日韩av影片在线观看| 不卡av电影院| 成人黄色影片在线| 欧美裸身视频免费观看| 91九色蝌蚪国产| 欧亚精品在线观看| 91成人精品网站| 午夜精品久久久久久久99热浪潮| 日韩国产欧美区| 伦伦影院午夜日韩欧美限制| 久久久久久久国产| 色综合色综合网色综合| 国产福利精品av综合导导航| 免费91麻豆精品国产自产在线观看| 久久精品国产亚洲精品2020| 亚洲欧美日本伦理| 欧美日韩在线视频观看| 日韩电影视频免费| 日韩在线视频导航| 色综合男人天堂| 国产精品久久久久999| 国产日韩欧美在线播放| 成人免费高清完整版在线观看| 国产精品久久久久久久7电影| 成人福利网站在线观看11| 全亚洲最色的网站在线观看| 亚洲精品久久久久中文字幕欢迎你| 欧美第一黄网免费网站| 国产伊人精品在线| 日韩中文字幕在线播放| 免费成人高清视频| 久久亚洲精品视频| 亚洲网站在线观看| 亚洲综合精品伊人久久| 性欧美长视频免费观看不卡| 亚洲美女精品成人在线视频| 精品久久中文字幕久久av| 韩国视频理论视频久久| 国产精品久久久久久久久久| 国产日韩欧美视频在线| 日韩成人在线视频| 亚洲va欧美va在线观看| 日韩a**站在线观看| 欧美激情一区二区三级高清视频| 高清日韩电视剧大全免费播放在线观看| 国产经典一区二区| 91精品国产电影| 欧美大学生性色视频| 欧美国产日韩二区| 精品人伦一区二区三区蜜桃免费| 欧美日韩国产成人在线| 国产亚洲欧美日韩精品| 一区二区av在线| 一本久久综合亚洲鲁鲁| 日韩欧美中文字幕在线播放| 日本精品一区二区三区在线| 亚洲电影免费观看高清| 最近2019年中文视频免费在线观看| 精品国产91久久久| 国产精品久久久久久久一区探花| 欧美激情区在线播放| 热门国产精品亚洲第一区在线| 2023亚洲男人天堂| 国产欧美精品在线| 97国产成人精品视频| xxxxxxxxx欧美| 国产精品亚洲片夜色在线| 国产精品免费福利| 九九精品视频在线观看| 国产成人免费91av在线| 最近2019年手机中文字幕| 欧美性猛交xxxx偷拍洗澡| 三级精品视频久久久久| 日韩中文字幕在线播放| 国产日韩精品入口| 久久99精品国产99久久6尤物| 欧美性猛交丰臀xxxxx网站| 欧美重口另类videos人妖| 91在线视频一区| 最近2019年日本中文免费字幕| 9.1国产丝袜在线观看| 日本一区二区三区在线播放| 亚洲香蕉av在线一区二区三区| 欧美激情一区二区三区在线视频观看| 久久精品成人欧美大片| 日韩欧美国产激情| 日韩精品小视频| 久久亚洲精品中文字幕冲田杏梨| 国产日本欧美在线观看| 欧美激情国产精品| 日韩在线中文字| 一区二区亚洲精品国产| 亚洲国产精品久久久久| 亚洲精品自拍第一页| 一区二区av在线| 亚洲人免费视频| 欧美视频专区一二在线观看| 成人黄色在线观看| 国产区精品视频| 欧美在线一区二区视频| 欧美色视频日本高清在线观看| 深夜成人在线观看| 韩剧1988在线观看免费完整版| 久久久精品美女| 国产精品美女视频网站| 亚洲男人的天堂在线| 欧美成人网在线| 国产精品成久久久久三级| 在线观看不卡av| 成人精品在线视频| 91久久久久久久一区二区| 亚洲欧洲黄色网| 欧美黑人一区二区三区| 日韩av网址在线观看| 91在线无精精品一区二区| 国产精品高清在线观看| 欧美中文字幕第一页| 国产一区二区美女视频| 色婷婷亚洲mv天堂mv在影片| 亚洲自拍偷拍一区| 久久综合88中文色鬼| 欧美成人免费va影院高清| 国产欧美精品一区二区三区-老狼| 久久久国产一区| 色综合色综合久久综合频道88| 97精品伊人久久久大香线蕉| 国产亚洲福利一区| 26uuu亚洲国产精品| 91精品久久久久久久久不口人| 国产有码在线一区二区视频| 欧美日韩高清区| 一本一本久久a久久精品综合小说| 国产999精品久久久影片官网| 国产欧美在线看| 欧美超级免费视 在线| 国内偷自视频区视频综合| 国产99久久精品一区二区永久免费| 高清欧美性猛交xxxx黑人猛交| 中文字幕欧美日韩| 最近中文字幕mv在线一区二区三区四区|