關於VC

程序可看成 = 數據 + 函數
程序中的類和結構,其作用只是爲了更好地去組織數據和函數.
數據是用來存儲信息,是信息的載體,而函數唯一功用就是去改變內存中的數據,以到達改變信息的目的。
數據在內存都是01表示的二進制串,而數據類型,只是爲了更好地去理解及使用二進制數據。


模塊化:
通常在一個系統要劃分多個模塊,也就存在一個模塊引用了另一個模塊.
爲了建立這種關聯,必須要引入另一個模塊的頭文件和lib文件信息.
頭文件作用:就是在編譯模塊時,保證語法的正確性:調用的數據成員及函數名是否申明(函數體可以不存在,因爲編譯時不需要知道函數地址)
,及參數是否正確等信息。
lib文件作用:就是在連接時,保證函數調用的正常跳轉,即在lib找查找調用的函數地址是否存在,
也就是要知道函數體所在的DLL位置或函數索引號,以方便跳轉.這時,函數必須要定義.


include頭文件:
在定義一個類的頭文件中,如果應該引用了其他類信息,
通常引入其他類信息,是通過include其他類頭文件信息?另外還有種方法就是class直接申明.
用class是因爲通常頭文件中通常只是定義指針,
如果定義對象(對象是要計算空間)及其方法的調用(方法調用在編譯時是要進行函數符號校驗),就不能用class.
如果是繼承關係,則用include方式.
現在結合uml中的"聚合"和"組合"兩個的概念來理解.
聚合與組合共同點就是:一個對象由其他的對象組合而成.
其主要區別是:聚合就是對象的生命期不一致.組合就是對象的生命期一致.
如果是聚合類,應該就用class,否則就用include.
UML中也有直接(強)依賴和間接(弱)依賴兩個概念.include就是強依賴,class或參數或函數體內有引用就是弱依賴.
這樣理解,就可以將實際實現與UML的概念符號連通了。

資源文件:
每個工程都會對應一個rc文件,rc文件用來保存菜單/工具條/對話框等等界面資源的描述,而實際的各個資源二進制數據就是存在在res目錄下各個資源文件.
如果對RC結構熟悉,可以直接在RC文件中編輯,不需VC的資源編輯器.這些資源在編譯後,都是以二進制的形式被打包到dll或exe中.模塊被加載到內存後,有唯一的句柄用於標識模塊對應資源.
程序通過資源的ID來標識菜單項和工具條某一按鈕.爲方便程序調用
這些ID都被記錄在resource.h頭文件中,通常這個文件都被包括在主應用對象申明的頭文件中.
一個進程中,只允許有一個當前資源句柄,當一個進程加載多個模塊時,每個函數對資源的引用只侷限在自己資源內.所以就存在資源切換的處理.如果資源句柄不正確可能導致得到的資源不正確的問題.
 
ID與函數的映射,是通過ON_COMMAND宏來將ID與處理過程指針關聯起來並保存到消息映射表中,

命令消息的路由過程:MainFrame->View->Document->MainFrame->Application....

用戶消息定義:
除宏外,爲防止消息號重複也可以這樣定義:
const UINT USER_ADDMESSAGE = ::RegisterWindowMessage("USER_ADDMESSAGE");

同步發送:SendMessage異步發送:::PostMessage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章