CreateWindowA 巨集 (winuser.h)

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

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

語法

void 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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 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