小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Visual C .NET編程講座之二(3)

 dazuo0312 2006-09-09
Visual C++.NET編程講座之二(3)
2.運(yùn)行機(jī)制

  在程序中,當(dāng)定義一個(gè)類對象時(shí),它會(huì)自動(dòng)調(diào)用相應(yīng)的構(gòu)造函數(shù)。所謂"類對象",就是用該類定義的"變量",這個(gè)"變量"又稱為類的一個(gè)實(shí)例。例如,theApp就是類CSimpApp的一個(gè)對象。

  MFC正是利用類的這種"自動(dòng)調(diào)用相應(yīng)的構(gòu)造函數(shù)"特性,使得WinMain()函數(shù)的調(diào)用變成了應(yīng)用程序框架內(nèi)部的調(diào)用,所以我們在代碼中看不到每個(gè)Windows程序所必須有的WinMain()函數(shù)。

  當(dāng)應(yīng)用程序運(yùn)行到"CSimpApp theApp;"時(shí),系統(tǒng)就會(huì)先調(diào)用基類CWinApp構(gòu)造函數(shù),進(jìn)行一系列的內(nèi)部初始化操作,然后自動(dòng)調(diào)用CSimpApp的虛函數(shù)InitInstance(),該函數(shù)會(huì)進(jìn)一步調(diào)用相應(yīng)的函數(shù)來完成主窗口的構(gòu)造和顯示工作。下面來看看上述程序中InitInstance的執(zhí)行過程。

  首先執(zhí)行的是:

m_pMainWnd = new CMainFrame;

  該語句用來創(chuàng)建從CFrameWnd類派生而來的用戶框架窗口CMainFrame類對象,繼而調(diào)用該類的構(gòu)造函數(shù),使得Create函數(shù)被調(diào)用,完成了窗口創(chuàng)建工作。

  然后執(zhí)行后面兩句:

m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();

  用作窗口的顯示和更新。接下來調(diào)用:

m_pMainWnd->MessageBox("你好,歡迎進(jìn)入MFC世界!");

  最后返回TRUE,表示窗口創(chuàng)建成功。

  由于應(yīng)用程序類CWinApp是用來調(diào)用WinMain以及實(shí)例的初始化,因此每一個(gè)MFC應(yīng)用程序有且只能一個(gè)這樣的應(yīng)用程序類,且需要一個(gè)全局的對象實(shí)例,如上述程序中的theApp,當(dāng)然也可換一個(gè)對象名。

  InitInstance()完成初始化工作之后,接下來就是調(diào)用基類CWinApp的成員函數(shù)Run(),執(zhí)行應(yīng)用程序的消息循環(huán),即重復(fù)執(zhí)行接收消息并轉(zhuǎn)發(fā)消息的工作。當(dāng)Run()檢查到消息隊(duì)列為空時(shí),將調(diào)用基類CWinApp的成員函數(shù)OnIdle進(jìn)行空閑時(shí)的后臺(tái)處理工作。若消息隊(duì)列為空且又沒有后臺(tái)工作要處理時(shí),則應(yīng)用程序一直處于等待狀態(tài),一直等到有消息為止。

  當(dāng)程序結(jié)束后,調(diào)用基類CWinApp的成員函數(shù)ExitInstance(),完成終止應(yīng)用程序的收尾工作。這就是MFC應(yīng)用程序的運(yùn)行機(jī)制。

  3.MFC類結(jié)構(gòu)

  Visual C++發(fā)展至今,MFC類庫越來越強(qiáng)大,其基本層次結(jié)構(gòu)如圖5所示,箭頭的方向是從派生類指向基類。


圖5 MFC類基本層次結(jié)構(gòu)

  其中,CObject類是MFC提供的絕大多數(shù)類的基類。該類完成動(dòng)態(tài)空間的分配與回收,支持一般的診斷、出錯(cuò)信息處理和文檔序列化等。

  CCmdTarget類主要負(fù)責(zé)將系統(tǒng)事件(消息)和窗口事件(消息)發(fā)送給響應(yīng)這些事件的對象,完成消息發(fā)送、等待和派遣(調(diào)度)等工作,實(shí)現(xiàn)應(yīng)用程序的對象之間協(xié)調(diào)運(yùn)行。

  CWinApp類是應(yīng)用程序的主線程類,它是從CWinThread類派生而來。CWinThread類用來完成對線程的控制,包括線程的創(chuàng)建、運(yùn)行、終止和掛起等。

  CDocument類是文檔類,包含了應(yīng)用程序在運(yùn)行期間所用到的數(shù)據(jù)。

  CWnd類是一個(gè)通用的窗口類,用來提供Windows 中的所有通用特性。

  CView 是用于讓用戶通過窗口來訪問文檔以及負(fù)責(zé)文檔內(nèi)容的顯示。

  CFrameWnd 類是從 CWnd 繼承來的,并實(shí)現(xiàn)了標(biāo)準(zhǔn)的框架應(yīng)用程序。

  CDialog 類用來控制對話框窗口。

  CMDIFrameWnd和CMDIChildWnd類分別用來多文檔應(yīng)用程序的主框架窗口和文檔子窗口的顯示和管理。
CMiniFrameWnd類是一種簡化的框架窗口,它沒有最大化和最小化窗口按鈕,也沒有窗口系統(tǒng)菜單,一般很少用到它。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多