利用win32創建窗口函數,主要操作步驟為:
1、設計一個窗口類
2、注冊窗口類
3、創建窗口
4、顯示及窗口更新
5、消息循環
6、窗口過程函數
(1)設計一個窗口類
設計窗口類,這樣的類型已經被windows定義好了,我們只需要像選擇題一樣填滿定義好的結構體(WNDCLASS)即可。
首先有兩個一般設為0的選項:cbClsExtra和cbWndExtra,這兩個是類附加內存和窗口附加內存。
hbrBackground指定窗口類的背景畫刷句柄。可以用來指定一個畫刷的句柄,也可以指定一個標准的系統顏色值。
hCursor指定窗口類的光標句柄
hIcon指定窗口類的圖標句柄
hInstance指定包含窗口過程程序的程序的實例句柄
lpfnWndProc是一個函數指針,指向窗口過程函數
lpszClassName指定窗口類的名字
lpszMenuName指定菜單資源的名字
style指定窗口的樣式
(2)注冊窗口類
RegisterClass( xxx )里面的參數為指向窗口WNDCLASS的指針
讓操作系統知道這一類型的窗口相關信息
(3)創建窗口
hwnd = CreateWindow(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParant,hMenu,hInstance,lpParam)
lpClassName指定窗口類的名稱,即窗口類中的lpszClassName
lpWindowName指定窗口的名字
dwStyle指定創建的窗口樣式,主要是窗口顯示些什么東西
x,y,nWidth,nHeight左上角坐標,長、寬
hWndParant指定被創建窗口的父窗口句柄
hMenu指定窗口菜單的句柄
hInstance指定窗口所屬的應用程序實例的句柄
lpParam多數窗口將這個設為NULL
(4)顯示及更新
ShowWindow(hwnd,窗口顯示狀態);
UpdateWindow(hwnd);
(5)消息循環
創建、顯示、更新窗口之后,需要有一個消息循環,不斷的從消息隊列中讀取消息。
GetMessage( lpMsg , hWnd , wMsgFilterMin, wMsgFilterMax)
lpMsg指向一個消息結構體(MSG)
hWnd指定接收哪一個窗口的消息,通常設為NULL,接收屬於調用線程所有窗口的窗口消息
wMsgFilterMin,wMsgFilterMax指定要獲取的消息最小值和最大值,通常設為0
GetMessage函數對於WM_QUIT消息,返回0
TranslateMessage和DispatchMessage對收到的消息進一步處理
(6)窗口過程函數
用於處理發送給窗口的消息
這一章主要通過一個win32編程的例子,講述了windows程序設計,是一種交互式的、事件驅動的程序設計模式,基於消息的。
詳細內容,參考VC++深入講解這本書吧
本節程序