首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Win32 API CreateWindowExW 參數詳解:從零構建 Windows 窗口

     編輯:程式設計綜合問答

CreateWindowExW 是 Windows 編程創建擴展風格窗口的核心函數。以下是關鍵參數的中文對照表與實戰要點:

函數原型

HWND CreateWindowExW(
    DWORD dwExStyle,      // 擴展窗口風格
    LPCWSTR lpClassName,  // 窗口類名
    LPCWSTR lpWindowName, // 窗口標題
    DWORD dwStyle,        // 窗口風格
    int x, int y,         // 位置
    int nWidth, int nHeight, // 尺寸
    HWND hWndParent,      // 父窗口句柄
    HMENU hMenu,          // 菜單/子窗口 ID
    HINSTANCE hInstance,  // 實例句柄
    LPVOID lpParam        // 創建數據指針
);

常用擴展風格 (dwExStyle)

常量含義
WS_EX_CLIENTEDGE凹邊框(輸入框常用)
WS_EX_OVERLAPPEDWINDOW標準重疊窗口(含邊框、標題欄)
WS_EX_TOPMOST置頂窗口
WS_EX_TOOLWINDOW工具窗口(不顯示在任務欄)

常用窗口風格 (dwStyle)

常量含義
WS_OVERLAPPEDWINDOW標準應用窗口(含最小/最大/關閉按鈕)
WS_VISIBLE創建即顯示
WS_CHILD子窗口
WS_POPUP彈出式窗口

實戰避坑指南

  • 類名必須已註冊:lpClassName 需與 RegisterClassEx 註冊的一致。
  • Unicode 字串:_W 後綴要求寬字符,字串常量加 L"" 或用 TEXT() 宏。
  • CW_USEDEFAULT:讓系統自動決定位置/大小,僅適用於重疊窗口。
  • 返回值檢查:失敗返回 NULL,調用 GetLastError() 獲取錯誤碼。

最小化示例

WNDCLASSW wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.lpszClassName = L"MyWindowClass";
RegisterClassW(&wc);

HWND hwnd = CreateWindowExW(
    0, L"MyWindowClass", L"標題",
    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
    NULL, NULL, hInstance, NULL);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved