Win32窗體建立

2021-09-24 09:31:28 字數 2356 閱讀 4812

#include//視窗過程函式

lresult callback wndproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam)

return defwindowproc(hwnd,umsg,wparam,lparam);

}int winapi winmain(hinstance hinstance, hinstance hprevinstance, lpstr lpcmdline, int ncmdshow)//這是windows介面程式的入口

//3.建立視窗

/* hwnd winapi createwindow(

_in_opt_ lpctstr lpclassname, //視窗類的名稱

_in_opt_ lpctstr lpwindowname, //視窗的名字

_in_ dword dwstyle, //視窗的樣式,要注意區分 wndclass 中的 style 成員與 createwindow 函式的 dwstyle 引數, 前者是指定視窗類的樣式, 基於該視窗類建立的視窗都具有這些樣式,

_in_ int x, //視窗的左上角x值

_in_ int y, //視窗左上角y值

_in_ int nwidth, //視窗的寬度

_in_ int nheight, //視窗的高度

_in_opt_ hwnd hwndparent, //視窗的父視窗控制代碼

_in_opt_ hmenu hmenu, //視窗的選單控制代碼

_in_opt_ hinstance hinstance, //視窗的應用程式控制代碼

_in_opt_ lpvoid lpparam 作為 wm_create 訊息的附加引數 lparam 傳入的資料指標。 在建立多文件介面的客戶視窗時, lpparam 必須指向 clientcreatestruct 結構體。多數視窗將這個引數設定為 null。

); */

//4.顯示、更新視窗

//bool showwindow( hwnd hwnd, int ncmdshow );

/* showwindow 函式有兩個引數, 第乙個引數 hwnd 就是在上一步驟中成功建立視窗後返回的那個視窗控制代碼;第二個引數 ncmdshow 指定了視窗顯示的狀態,常用的有以下幾種。

sw_hide: 隱藏視窗並啟用其他視窗。

sw_show: 在視窗原來的位置以原來的尺寸啟用和顯示視窗。

sw_showmaximized: 啟用視窗並將其最大化顯示。

sw_showminimized: 啟用視窗並將其最小化顯示。

sw_shownormal: 啟用並顯示視窗。如果視窗是最小化或最大化的狀態,系統將其恢復到原來的尺寸和大小。應用程式在第一次顯示視窗的時候應該指定此標誌。

在呼叫 showwindow 函式之後, 我們緊接著呼叫 updatewindow 來重新整理視窗,就好像我們買了新房子,需要裝修一下。updatewindow 函式的原型宣告如下:

bool updatewindow( hwnd hwnd );

其引數 hwnd 指的是建立成功後的視窗的控制代碼。 updatewindow 函式通過傳送乙個wm_paint 訊息來重新整理視窗, updatewindow 將 wm_paint 訊息直接傳送給了視窗過程函式進行處理, 而沒有放到我們前面所說的訊息佇列裡, 請讀者注意這一點。 關於wm_paint 訊息的作用和視窗過程函式, 後面我們將會詳細講解。

到此,乙個視窗就算建立完成了。

*/ showwindow(hwnd,sw_show);

updatewindow(hwnd);

//5.訊息迴圈

/* 在建立視窗、顯示視窗、更新視窗後,我們需要編寫乙個訊息迴圈,不斷地從訊息佇列中取出訊息,並進行響應。要從訊息佇列中取出訊息,我們需要呼叫 getmessage()函式

所謂的訊息迴圈,其實就是乙個死迴圈,不斷的通過getmessage捕捉著視窗的訊息,再通過translatemessage將虛擬鍵訊息轉換為字元訊息,然後通過dispatchmessage將訊息分派給我們的視窗程式進行處理(所謂處理就是呼叫我們定義的視窗處理函式winproc)

*/ msg msg;

while (getmessage(&msg,null,0,0))

/*dispatchmessage 函式分派乙個訊息到視窗過程,由視窗過程函式對訊息進行處理。dispachmessage 實際上是將訊息回傳給作業系統,由作業系統呼叫視窗過程函式對訊息進行處理( 響應)。

*/}

win32畫窗體背景

背景 應產品需求將視窗載入時的loading.gif換了一張,原先是白底的gif,然後換了一張黑底的gif,放上去真的好醜,因為窗體的背景色是白色。然後就需要我給窗體畫個背景顏色融合這個新的gif,踩了很多opengl ondraw等很多坑,這裡先po一下 void onpaint hdc hdc ...

WIN32視窗建立

win32視窗建立過程 1 定義視窗類 在msdn中找到函式原型 winmain 2 定義視窗處理函式 在msdn中找到原型 windowproc 3 設計視窗類 4 註冊視窗類 registerclass registerclas 5 建立視窗 createwindow createwindowe...

win32動態生成窗體選單

include windows.h define id file exit 9001 定義選單的id號 define id stuff go 9002 const char g szclassname mywindowsclass 定義視窗類的名稱陣列 lresult callback wndpro...