Windows執行機理 建立視窗

2021-08-17 03:45:30 字數 1666 閱讀 3837

windows執行機理這系列文章都是來至於《零基礎學qt4程式設計》——吳迪,個人覺得寫得很好,所以進行了搬運和個人加工

windows 視窗在建立之前,其屬性必須設定好,所謂屬性包括類的名字、圖示、游標及視窗過程處理函式等屬性。為了設定這些屬性,windows 要求註冊視窗類,一經註冊,就可以建立更多的同類視窗,無需再次註冊。視窗類僅僅定義了視窗的特徵,所有建立視窗的物件都用視窗類來建立視窗。程式必須在產生視窗前先利用api 函式registerclass 設定屬性,這乙個過程就是註冊視窗類。視窗註冊完之後,就可以建立相應的視窗。註冊視窗時,必須給函式傳遞乙個指標,這個指標指向乙個包含視窗屬性的結構。該結構有2 個版本,wndclass 和wndclas***,前者本來用於windows 早期版本,但現在仍可沿用;後者用於32 位windows,該結構包含1 個cbsize 成員和1 個指向小圖示的控制代碼,其它兩者相同。wndclas*** 定義如下:

typedef struct_wndclas***

wndclas***;

atom registerclas***

(const wndclas*** *lpwcx

);

呼叫過程如下:

wndclas*** wcex;

wcex.cbsize = sizeof(wndclas***);

wcex.style = cs_hredraw | cs_vredraw; //視窗風格

wcex.lpfnwndproc = (wndproc)wndproc; //視窗過程,處理訊息響應

wcex.cbcl***tra = 0;

wcex.cbwndextra = 0;

wcex.hinstance = hinstance; //程式例項

wcex.hicon = 0; //圖示

wcex.hcursor = loadcursor(null,idc_arrow); //游標

wcex.hbrbackground = (hbrush)(color_window+1); //背景色

wcex.lpszmenuname = null; //選單資源

wcex.lpszclassname = 「your class name」; //視窗類名

wcex.hiconsm = null; //小圖示

registerclas***(&wcex);

在此之後,就可以使用函式createwindow 建立視窗了。不過,這個函式還有11 個引數,第1 個引數就是:

wcex.lpszclassname = 「your class name」;
只有用註冊過的視窗類名才可以建立窗體。不過,使用者一般情況下不用擔心這些事情,因為,mfc 已經做了其中的大部分事情。如:

⑴ 在3 個應用程式框架裡,主要的視窗都已經被建立了,可以直接使用c++物件;

⑵ 在資源編輯器裡,控制項視窗也被設計好了,您可以用class wizard 為控制項視窗連線c++物件。

⑶ 如果是動態建立控制項,您只需要用create 等函式來建立視窗,這一過程中,mfc 提供了方法來判斷視窗類是否註冊。若未註冊,則先註冊,再建立視窗(您完全可以不了解這些內容)。

Windows執行機理 視窗和控制代碼

windows執行機理這系列文章都是來至於 零基礎學qt4程式設計 吳迪,個人覺得寫得很好,所以進行了搬運和個人加工 1.視窗 視窗是windows應用程式中乙個非常重要的元素,乙個windows應用程式至少要有乙個視窗,稱為主視窗,視窗是指現在是螢幕上面的一快矩形區域,是windows應用程式與使...

Windows執行機理 視窗控制代碼和訊息

windows執行機理這系列文章都是來至於 零基礎學qt4程式設計 吳迪,個人覺得寫得很好,所以進行了搬運和個人加工 現在我們將訊息與控制代碼聯絡起來。假如有乙個視窗,且擁有該視窗的乙個控制代碼 稱作乙個hwnd 我們命名該控制代碼為your hwnd。假設因為其他的視窗剛剛從該視窗上移走,那麼作業...

Windows執行機理 API與SDK

windows執行機理這系列文章都是來至於 零基礎學qt4程式設計 吳迪,個人覺得寫得很好,所以搬運加以整理。其次我們經常聽到的win32 sdk開發,qt sdk開發等等說法,那什麼是sdk,sdk全稱 software development kit 中文翻譯就是軟體開發開發包,例如,當我們買某...