?? vc++技術內(nèi)幕(第四版)筆記(1~2章).txt
字號:
第一章:Microsoft Windows 和 Visual C++
1,Windows應用程序中一定要有WinMain函數(shù),用來完成某些特殊的任務,其中最主要的是創(chuàng)建應用次序的主窗口。
2,DOS下,所有次序的目標模塊在創(chuàng)建過程中都被靜態(tài)連接起來。而Windows允許動態(tài)連接,即一些特定結構的庫(DLL)可以在運行過程中被裝入和連接,并且被多個應用程序共享。
3,項目是一些相互關聯(lián)的源文件的集合,這些源文件經(jīng)過編譯、連接,然后被組合在一起形成可執(zhí)行的Wwindows應用程序或DLL。
4,幾個重要Developer Studio創(chuàng)建的中間文件:CLW (支持ClassWizard ) DSP (項目文件)DSW (工作空間文件) NCB (支持ClassView)OPT (保持工作空間的配置) PLG (建立日志文件)
5,AppWizard是一個代碼生成器,它會按照用戶通過對話框指定的特性、類名、及源代碼文件名來產(chǎn)生Windows應用程序工作架構。AppWizard所產(chǎn)生的代碼只是一些最基本的代碼,它完成的功能完全由應用程序的基類所決定。
/**************************************/第二章:Microsoft基本類庫應用程序框架
1,按照慣例,MFC庫類名用大寫“C”打頭。
2,類CMyApp的對象theApp就代表一個應用程序。當運行該應用程序的時候,WINDOWS自動調(diào)用程序框架內(nèi)部的WinMain函數(shù),WinMain函數(shù)會去查找該應用程序的全局構造對象(theApp),該對象是有CWinApp類派生類的對象。C++中,全局對象在主程序被運行之前就已經(jīng)構造好了。
3,當WinMain發(fā)現(xiàn)該應用程序?qū)ο?theApp)時,會自動調(diào)用虛擬成員函數(shù)CWinApp::InitInstance(),該函數(shù)會進一步調(diào)用相應的函數(shù)來完成主窗口的構造和顯示工作。由于基類CWinApp中不知道我們實際需要的什么樣的窗口,所以我們必須在派生出的應用程序類CMyApp中重載InitInstance()函數(shù)(CMyApp::InitInstance()),由多態(tài)性,當調(diào)用CWinApp::InitInstance()時候,會自動轉(zhuǎn)向MyApp::InitInstance().
4,WinMain函數(shù)調(diào)用完InitInstance()函數(shù)后,就調(diào)用CWinApp::Run函數(shù),CWinApp::Run函數(shù)被隱藏在基類中負責傳遞應用程序的消息給相應的窗口,從而維護應用程序的運轉(zhuǎn)。
5,關閉應用程序(對單一框架程序來說),首先CMyFrame 對象被刪除,然后退出Run,進而退出WinMain,最后刪除CMyApp對象(theApp)。
6,一些Windows類庫在基類為鼠標事件消息以及其他一些標準消息定義一些虛函數(shù),如果需要,派生類會對這些函數(shù)進行重載。MFC庫應用程序框架沒有采用虛函數(shù)來處理Windows消息,而是通過一些宏來將特定的消息映射到派生類中相應的成員函數(shù)上。(原因:P21。C++類對程序中用到的每一個派生類都要求有一張?zhí)摵瘮?shù)分發(fā)表VTABLE,在BTABLE中每個虛函數(shù)都需要有一個4字節(jié)的入口項,而不管該函數(shù)會不會在派生類中被重載。)MFC消息控件函數(shù)要求提供函數(shù)原型,函數(shù)體,以及在消息映射中的入口。
7,文檔-視圖結構將數(shù)據(jù)從用戶對數(shù)據(jù)的觀察中分離出來,這樣就允許對同一數(shù)據(jù)可以有多個視圖。MFC庫應用程序中,文檔和視圖是由C++類的實例來描述的。文檔基類代碼通常和FILE OPEN,F(xiàn)ILE SAVE菜單項關聯(lián),而派生文檔類則一般用來完成對文檔對象數(shù)據(jù)的實際讀寫工作。視圖基類通常表示一個包含于框架窗口中的窗口,而派生視圖類則常用來和穩(wěn)當類相聯(lián)系,負責應用程序的顯示和打印機I/O。派生視圖類及其基類共同處理WINDOWS的消息,而MFC庫則協(xié)調(diào)文檔,視圖,框架窗口,以及應用程序之間的相互作用關系,這種協(xié)調(diào)多用虛函數(shù)來實現(xiàn)。文檔對象既可以與一次可全部讀入內(nèi)存的磁盤文件相關聯(lián),也可以同數(shù)據(jù)庫相關聯(lián)。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -