關於RegisterClass和CreateWindow


      RegisterClass就函數名字和其參數來解釋,中文意思是注冊窗口類別,顧名思義就是注冊一個窗口類,而CreateWindow字面上意思就是創建一個窗口。可能剛做windows開發的對着兩個函數及其之間關聯有點疑問。

  RegisterClass函數的作用是通知系統,你要定義一個新的窗體類型,然后把這個類型記錄到系統里面,以后你就可以使用CreateWindow來創建一個基於此類型的窗體。基於此類型的窗體都具有相同的屬性,比如,背景色,光標,圖標等等。在MFC中,對於對話框而言,系統已經注冊了對話框自己的類型,因此你無需調用RegisterClass就可以使用自帶的對話框類創建模態或者非模態窗口。

  對於控件而言,系統已經注冊了對話框自己的類型,因此你也無需調用RegisterClass就可以使用CreateWindow來創建控件,而CreateWindow中的第一個參數,正是RegisterClass函數使用的WNDCLASS結構中的成員lpszClassName。
  windows控件與對話框的區別在於,對話框的窗體過程由調用程序提供,而控件的窗體過程是定義在系統中的,你必須對窗體進行子類化(所謂的子類化可以參考我前面《子類化和超類化區別》那篇文章),才能定制控件的處理消息邏輯。
  其實,說白了,早在C語言的Window編程時代,就已經支持了繼承,這為以后的C++語言的實現奠定了基礎。RegisterClass函數的作用是定義一個窗體類,相對於C++中的class概念,而CreateWindow這個函數是定義基於這個類型的對象,相對於C++中的對象概念。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM