CreateWindowA 巨集 (winuser.h)

建立重疊、彈出視窗或子視窗。 它會指定視窗類別、視窗標題、視窗樣式和 (選擇性地) 視窗的初始位置和大小。 函式也會指定視窗的父代或擁有者,如果有的話,以及視窗的功能表。

若要除了 CreateWindow 支援的樣式之外,使用擴充窗口樣式,請使用 CreateWindowEx 函 式。

語法

HWND CreateWindowA(
  [in, optional]  lpClassName,
  [in, optional]  lpWindowName,
  [in]            dwStyle,
  [in]            x,
  [in]            y,
  [in]            nWidth,
  [in]            nHeight,
  [in, optional]  hWndParent,
  [in, optional]  hMenu,
  [in, optional]  hInstance,
  [in, optional]  lpParam
);

參數

[in, optional] lpClassName

類型: LPCTSTR

Null 終止的字串或先前呼叫 RegisterClass 或 RegisterClassEx式所建立的類別 Atom。 Atom 必須以低順序的 lpClassName 字組表示;高序字必須是零。 如果 lpClassName 是字串,它會指定視窗類別名稱。 類別名稱可以是向 RegisterClass 或 RegisterClassEx 註冊的任何名稱,前提是註冊類別的模組也是建立窗口的模組。 類別名稱也可以是任何預先定義的系統類別名稱。 如需系統類別名稱的清單,請參閱一節。

[in, optional] lpWindowName

類型: LPCTSTR

視窗名稱。 如果視窗樣式指定標題列, lpWindowName 指向的視窗標題會顯示在標題列中。 使用 CreateWindow 建立控件時,例如按鈕、複選框和靜態控件,請使用 lpWindowName 來指定控件的文字。 使用 SS_ICON 樣式建立靜態控件時,請使用 lpWindowName 來指定圖示名稱或標識符。 若要指定標識碼,請使用語法 “#num”。

[in] dwStyle

類型: DWORD

正在建立之窗口的樣式。 此參數可以是 視窗樣式值的組合,加上一節中所指出的控件樣式。

[in] x

類型: int

視窗的初始水準位置。 對於重疊或彈出視窗, x 參數是視窗左上角的初始 X 座標,以螢幕座標表示。 針對子視窗, x 是相對於父視窗工作區左上角之視窗左上角的 X 座標。 如果此參數設定為 CW_USEDEFAULT,系統會選取視窗左上角的預設位置,並忽略 y 參數。 CW_USEDEFAULT 僅適用於重疊視窗;如果已針對彈出視窗或子視窗指定, 則 xy 參數會設定為零。

[in] y

類型: int

視窗的初始垂直位置。 對於重疊或彈出視窗, y 參數是視窗左上角的初始 Y 座標,以螢幕座標表示。 針對子視窗, y 是子視窗左上角的初始 Y 座標,相對於父視窗工作區的左上角。 對於清單框, y 是清單框工作區左上角相對於父視窗工作區左上角的初始 Y 座標。

如果使用 WS_VISIBLE 樣式位集建立重疊的視窗,且 x 參數設定為 CW_USEDEFAULT則 y 參數會決定視窗的顯示方式。 如果 y 參數CW_USEDEFAULT,則視窗管理員會在建立窗口之後,使用 SW_SHOW 旗標呼叫 ShowWindow。 如果 y 參數是一些其他值,則視窗管理員會以該值呼叫 ShowWindow ,並將該值作為 nCmdShow 參數。

[in] nWidth

類型: int

視窗的寬度,以裝置單位為單位。 對於重疊的視窗, nWidth 是視窗的寬度、螢幕座標或 CW_USEDEFAULT。 如果 nWidth是CW_USEDEFAULT,系統會選取視窗的預設寬度和高度;默認寬度會從初始 X 座標延伸到螢幕右邊緣,而預設高度會從初始 Y 座標延伸到圖示區域的頂端。 CW_USEDEFAULT 僅適用於重疊視窗;如果 為彈出視窗或子視窗指定CW_USEDEFAULT, 則 nWidthnHeight 會設定為零。

[in] nHeight

類型: int

視窗的高度,以裝置單位為單位。 對於重疊的視窗, nHeight 是視窗的高度,以螢幕座標表示。 如果 nWidth 設定為 CW_USEDEFAULT,系統會忽略 nHeight

[in, optional] hWndParent

類型: HWND

所建立視窗之父視窗或擁有者視窗的句柄。 若要建立子視窗或擁有的視窗,請提供有效的視窗句柄。 這個參數是彈出視窗的選擇性參數。

若要建立 僅限訊息的視窗,請提供 HWND_MESSAGE 或現有僅限訊息視窗的句柄。

[in, optional] hMenu

類型: HMENU

功能表的句柄,或根據視窗樣式指定子視窗標識符。 針對重疊或彈出視窗, hMenu 會識別要與視窗搭配使用的功能表;如果要使用類別功能表,它可以是 NULL 。 針對子視窗, hMenu 會指定子視窗標識碼,這是對話框控件用來通知其父代事件的整數值。 應用程式會決定子視窗識別碼;對於具有相同父視窗的所有子視窗而言,它必須是唯一的。

[in, optional] hInstance

類型: HINSTANCE

要與視窗相關聯之模組實例的句柄。

[in, optional] lpParam

類型: LPVOID

要透過 CREATESTRUCT 結構傳遞至視窗的值指標, (lpCreateParams 成員) 由WM_CREATE訊息的 lParam 參數所指向。 此訊息會在傳回之前,由此函式傳送至建立的視窗。

如果應用程式呼叫 CreateWindow 來建立 MDI 用戶端視窗, lpParam 應該指向 CLIENTCREATESTRUCT 結構。 如果 MDI 用戶端視窗呼叫 CreateWindow 來建立 MDI 子視窗, lpParam 應該指向 MDICREATESTRUCT 結構。 如果不需要其他數據,lpParam 可能是 NULL

傳回

類型: HWND

如果函式成功,傳回值會是新視窗的句柄。

如果函式失敗,傳回值為 NULL。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

傳回值

備註

在傳回之前, CreateWindow 會將 WM_CREATE 訊息傳送至窗口程式。 針對重疊、彈出視窗和子視窗, CreateWindow 會將 WM_CREATEWM_GETMINMAXINFOWM_NCCREATE 訊息傳送至視窗。 WM_CREATE訊息的 lParam 參數包含 CREATESTRUCT 結構的指標。 如果指定 了WS_VISIBLE 樣式, CreateWindow 會傳送視窗所有啟動和顯示視窗所需的訊息。

如果建立的視窗是子視窗,其預設位置會位於 Z 順序的底部。 如果建立的視窗是最上層視窗,則其預設位置位於 Z 順序的頂端 (,但除非建立的視窗本身是最上層的視窗) 底下。

如需控制任務列是否顯示已建立視窗按鈕的資訊,請參閱 管理任務列按鈕

如需移除視窗的資訊,請參閱 DestroyWindow函 式。

您可以在 lpClassName 參數中指定下列預先定義的系統類別。 請注意您可以在 dwStyle 參數中使用的對應控件樣式。

系統類別 意義
按鈕 指定小型矩形子視窗,代表使用者可以按下以開啟或關閉按鈕的按鈕。 按鈕控制項可以單獨或群組使用,而且可以標示或顯示沒有文字。 當使用者按鍵時,按鈕控制項通常會變更外觀。 如需詳細資訊,請參閱 按鈕

如需您可以在 dwStyle 參數中指定的按鈕樣式表格,請參閱 按鈕樣式

COMBOBOX 指定由清單框和類似編輯控制件的選取欄位所組成的控制件。 使用此樣式時,應用程式應該隨時顯示清單框,或啟用下拉式清單框。 如果顯示清單框,在選取字段中輸入字元會反白顯示符合輸入字元的第一個清單框專案。 相反地,選取清單框中的項目會顯示選取欄位中選取的文字。

如需詳細資訊,請參閱 下拉式方塊。 如需您可以在 dwStyle 參數中指定的下拉式方塊樣式表格,請參閱 下拉式方塊樣式

編輯 指定矩形子視窗,用戶可以在其中輸入鍵盤中的文字。 用戶選取控件,並按 TAB 鍵來提供鍵盤焦點。按下控件或移至該控制件。 當使用者編輯控件顯示閃爍插入號時,可以輸入文字;使用滑鼠移動游標、選取要取代的字元,或放置插入字元的數據指標;或使用BACKSPACE鍵來刪除字元。 如需詳細資訊,請參閱 編輯控件

如需您可以在 dwStyle 參數中指定的編輯控件樣式表格,請參閱 編輯控件樣式

LISTBOX 指定字元字串清單。 每當應用程式必須顯示名稱清單時,請指定此控制項,例如檔名,使用者可以從中選擇。 用戶可以按下字串來選取字串。 已醒目提示選取的字串,並將通知訊息傳遞至父視窗。 如需詳細資訊,請參閱 清單框

如需您可以在 dwStyle 參數中指定的清單框樣式表格,請參閱 清單框樣式

MDICLIENT 指定 MDI 用戶端視窗。 此視窗會接收控制 MDI 應用程式子視窗的訊息。 建議的樣式位WS_CLIPCHILDREN和WS_CHILD。 指定 WS_HSCROLLWS_VSCROLL 樣式,以建立 MDI 用戶端視窗,讓使用者將 MDI 子視窗捲動到檢視中。

如需詳細資訊,請參閱 多個檔介面

RichEdit 指定 Microsoft Rich Edit 1.0 控制件。 此視窗可讓用戶檢視及編輯具有字元和段落格式的文字,而且可以包含內嵌的元件物件模型 (COM) 物件。 如需詳細資訊,請參閱 Rich Edit Controls

如需您可以在 dwStyle 參數中指定之豐富編輯控件樣式的數據表,請參閱 Rich Edit 控件樣式

RICHEDIT_CLASS 指定 Microsoft Rich Edit 2.0 控制件。 此控制項可讓使用者檢視及編輯具有字元和段落格式設定的文字,並可包含內嵌 COM 物件。 如需詳細資訊,請參閱 Rich Edit Controls

如需您可以在 dwStyle 參數中指定之豐富編輯控件樣式的數據表,請參閱 Rich Edit 控件樣式

SCROLLBAR 指定包含滾動盒的矩形,並在兩端都有方向箭號。 每當使用者按兩下控制項時,滾動條就會將通知訊息傳送至其父視窗。 如有必要,父視窗會負責更新滾動盒的位置。 如需詳細資訊,請參閱 滾動條

如需您可以在 dwStyle 參數中指定的滾動條控件樣式表格,請參閱 滾動條控件樣式

靜態 指定用來標記、方塊或分隔其他控件的簡單文字欄位、方塊或矩形。 靜態控件不會接受任何輸入,而且不會提供任何輸出。 如需詳細資訊,請參閱 靜態控件

如需您可以在 dwStyle 參數中指定之靜態控件樣式的數據表,請參閱 靜態控件樣式

 

CreateWindow 會實作為 CreateWindowEx 函 式的呼叫,如下所示。

#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#ifdef UNICODE
#define CreateWindow  CreateWindowW
#else
#define CreateWindow  CreateWindowA
#endif

範例

如需範例,請參閱 使用窗口類別

注意

winuser.h 標頭會將 CreateWindow 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)

另請參閱

關於多個檔介面

通用控制件視窗類別

概念

CreateWindowEx

DestroyWindow

EnableWindow

其他資源

參考

RegisterClass

RegisterClassEx

ShowWindow

WM_COMMAND

WM_CREATE

WM_GETMINMAXINFO

WM_NCCREATE

WM_PAINT

Windows