共用方式為


CreateWindowA 宏 (winuser.h)

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

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

語法

HWND CreateWindowA(
  [in, optional] LPCSTR    lpClassName,
  [in, optional] LPCSTR    lpWindowName,
  [in]           DWORD     dwStyle,
  [in]           int       x,
  [in]           int       y,
  [in]           int       nWidth,
  [in]           int       nHeight,
  [in, optional] HWND      hWndParent,
  [in, optional] HMENU     hMenu,
  [in, optional] HINSTANCE hInstance,
  [in, optional] LPVOID    lpParam
);

參數

[in, optional] lpClassName

類型:LPCSTR

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

[in, optional] lpWindowName

類型:LPCSTR

視窗名稱。 如果視窗樣式指定標題列,則會在標題列中顯示 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。 如果 nWidthCW_USEDEFAULT,系統會選取視窗的默認寬度和高度;默認寬度會從初始 x 座標延伸至螢幕右邊緣,而預設高度會從初始 Y 座標延伸至圖示區域的頂端。 CW_USEDEFAULT 僅適用於重疊的視窗;如果已為彈出視窗或子視窗指定 CW_USEDEFAULTnWidthnHeight 會設定為零。

[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 參數中指定的下拉式方塊樣式表格,請參閱 下拉式方塊樣式

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

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

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

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

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

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

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

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

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

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

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

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

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

如需靜態控件樣式的數據表,您可以在 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 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winuser.h (包括 Windows.h)

另請參閱

關於多個檔介面

一般控件窗口類別

概念

CreateWindowEx

DestroyWindow

EnableWindow

其他資源

參考

RegisterClass

RegisterClassEx

ShowWindow

WM_COMMAND

WM_CREATE

WM_GETMINMAXINFO

WM_NCCREATE

WM_PAINT

Windows