Win32 程序開發:窗口類結構體 WNDCLASS 和 WNDCLASSEX


一、窗口類結構體簡介

窗口類結構體包含了窗口的各種參數信息。比如:窗口的圖標、菜單欄、背景顏色、窗口的消息處理等等。

窗口類結構體有兩個:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本)。至於為什么有 WNDCLASSEX 還要保留老版本的 WNDCLASS?主要是為了兼容以前使用老版本開發的 Win32 程序才保留的。


二、窗口類結構體的成員變量

這里暫時只介紹新版本的 WNDCLASSEX,也更推薦使用新版本的。

typedef struct tagWNDCLASSEXW  {
    UINT        cbSize;                // 窗口類結構體的內存大小(new)    
    UINT        style;                 // 類風格
    WNDPROC     lpfnWndProc;           // 窗口的處理過程
    int         cbClsExtra;            // 指定緊隨在 WNDCLASS 數據結構后分配的字節數
    int         cbWndExtra;            // 指定緊隨在窗口實例之后分配的字節數            
    HINSTANCE   hInstance;             // 窗口類所在模塊的實例句柄
    HICON       hIcon;                 // 窗口類的圖標
    HCURSOR     hCursor;               // 窗口類的光標
    HBRUSH      hbrBackground;         // 窗口類的背景畫刷
    LPCWSTR     lpszMenuName;          // 窗口類的菜單資源名
    LPCWSTR     lpszClassName;         // 窗口類的名稱
    HICON       hIconSm;               // 窗口類的任務欄圖標(new)    
} WNDCLASSW

新版本比老版本只多了兩個成員變量:cbSize 和 hIconSm。


三、窗口類結構體的使用

示例代碼如下:

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);                 // 窗口類的消息處理過程
 
/* 新增版本的窗口類結構體 */
WNDCLASSEX wndclassex;
wndclassex.style = 0;                                                 // 窗口類型為缺省類型
wndclassex.lpfnWndProc = WndProc;                                     // 定義窗口處理函數
wndclassex.cbClsExtra = 0;                                            // 窗口類無擴展
wndclassex.cbWndExtra = 0;                                            // 窗口實例無擴展
wndclassex.hInstance = hInstance;                                     // 當前實例句柄
wndclassex.hIcon = LoadIcon(NULL, IDI_APPLICATION);                   // 窗口的最小化圖標為缺省圖標
wndclassex.hCursor = LoadCursor(NULL, IDC_ARROW);                     // 窗口采用箭頭光標
wndclassex.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));     // 窗口背景為白色
wndclassex.lpszMenuName = NULL;                                       // 窗口無菜單
wndclassex.lpszClassName = L"CLASSNAME";                              // 窗口類名
 
/* 新增的成員變量 */
wndclassex.cbSize = sizeof(WNDCLASSEX);                               // 窗口類的內存大小
wndclassex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);                 // 窗口類菜單欄的圖標

參考:

Win32 程序開發:窗口類結構體WNDCLASS和WNDCLASSEX

Windows編程——窗口類的注冊



免責聲明!

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



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