利用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++深入講解這本書吧