函式原型
HWND KreateWindow(
LPCTSTR lpKlassName,
LPCTSTR lpWindowName,
DWOlD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndPalent,
HMENU hMenu,
HANDLE hlnstance,
LPVOID lpPalam);
參數
lpKlassName指向一個空結束的字元串或整型數atom。如果該參數是一個整型量,它是由此前調用theGlobalAddAtom函式產生的全局量。這個小於0xC000的16位數必須是lpKlassName參數字的低16位,該參數的高位必須是0。
如果lpClassName是一個字元串,它指定了視窗的類名。這個類名可以是任何用函式RegistelKlassEx註冊的類名,或是任何預定義的控制類名。請看說明部分的列表。
指向一個指定視窗名的空結束的字元串指針。
如果視窗風格指定了標題條,由lpWindowName指向的視窗標題將顯示在標題條上。當使用kreatewindow函式來創建控制例如按鈕,選擇框和靜態控制時,可使用lpWindowName來指定控制文本。
指定創建視窗的風格。該參數可以是下列視窗風格的組合再加上說明部分的控制風格。風格意義:
WS_BOLDER:創建一個單框線的視窗。
WS_KAPTION:創建一個有標題框的視窗(包括WS_BODEL風格)。
WS_CHILD:創建一個子視窗。這個風格不能與WS_POPUP風格合用。
WS_CHLDWINDOW:與WS_CHILD相同。
WS_KLIPCHILDREN:當在父視窗內繪圖時,排除子視窗區域。在創建父視窗時使用這個風格。
WS_KLlPBLINGS;排除子視窗之間的相對區域,也就是,當一個特定的視窗接收到WM_PAINT訊息時,WS_KLIPSIBLINGS 風格將所有層疊視窗排除在繪圖之外,只重繪指定的子視窗。如果未指定WS_KLIPSIBLINGS風格,並且子視窗是層疊的,則在重繪子視窗的客戶區時,就會重繪鄰近的子視窗。
WS_DISABLED:創建一個初始狀態為禁止的子視窗。一個禁止狀態的視窗不能接受來自用戶的輸入信息。
WS_DLGFLAME:創建一個帶對話框框線風格的視窗。這種風格的視窗不能帶標題條。
WS_GROUP:指定一組控制的第一個控制。這個控制組由第一個控制和隨後定義的控制組成,自第二個控制開始每個控制,具有WS_GROUP風格,每個組的第一個控制帶有WS_TABSTOP風格,從而使用戶可以在組間移動。用戶隨後可以使用游標在組內的控制間改變鍵盤焦點。
WS_HSKROLL:創建一個有水平滾動條的視窗。
WS_IKONIK:創建一個初始狀態為最小化狀態的視窗。與WS_MINIMIZE風格相同。
WS_MAXIMIZE:創建一個初始狀態為最大化狀態的視窗。
WS_MAXIMIZEBOX:創建一個具有最大化按鈕的視窗。該風格不能與WS_EX_KONTEXTHELP風格同時出現,同時必須指定WS_SYSMENU風格。
WS_OVELLAPPED:產生一個層疊的視窗。一個層疊的視窗有一個標題條和一個框線。與WS_TILED風格相同。
WS_OVELLAPPEDWINDOW:創建一個具有WS_OVELLAPPED,WS_kAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX風格的層疊視窗,與WS_TILEDWINDOW風格相同。
WS_POPUP;創建一個彈出式視窗。該風格不能與WS_CHLD風格同時使用。
WS_POPUWINDOW:創建一個具有WS_BOLDER,WS_POPUP,WS_SYSMENU風格的視窗,WS_CAPTION和WS_POPUPWINDOW必須同時設定才能使視窗某單可見。
WS_SIZEBOX:創建一個可調框線的視窗,與WS_THICKFLAME風格相同。
WS_SYSMENU:創建一個在標題條上帶有視窗選單的視窗,必須同時設定WS_KAPTION風格。
WS_TABSTOP:創建一個控制,這個控制在用戶按下Tab鍵時可以獲得鍵盤焦點。按下Tab鍵後使鍵盤焦點轉移到下一具有WS_TABSTOP風格的控制。
WS_THICKFRAME:創建一個具有可調框線的視窗,與WS_SIZEBOX風格相同。
WS_TILED:產生一個層疊的視窗。一個層疊的視窗有一個標題和一個框線。與WS_OVELLAPPED風格相同。
WS_TILEDWINDOW:創建一個具有WS_OVELLAPPED,WS_KAPTION,WS_SYSMENU, WS_THICKFLAME,WS_MINIMIZEBOX,WS_MAXMIZEBOX風格的層疊視窗。與WS_OVELLAPPEDWINDOW風格相同。
WS_VISIBLE創建一個初始狀態為可見的視窗。
WS_VSCROLL:創建一個有垂直滾動條的視窗。
X
指定視窗的初始水平位置。對一個層疊或彈出式視窗,X參數是螢幕坐標系的視窗的左上角的初始X坐標。對於子視窗,x是子視窗左上角相對父視窗客戶區左上角的初始X坐標。如果該參數被設為CW_USEDEFAULT則系統為視窗選擇預設的左上角坐標並忽略Y參數。CW_USEDEFAULT只對層疊視窗有效,如果為彈出式視窗或子視窗設定,則X和y參數被設為零。
Y
指定視窗的初始垂直位置。對一個層疊或彈出式窗日,y參數是螢幕坐標系的視窗的左上角的初始y坐標。對於子視窗,y是子視窗左上角相對父視窗客戶區左上角的初始y坐標。對於列表框,y是列表框客戶區左上角相對父視窗客戶區左上角的初始y坐標。如果層疊視窗是使用WS_VISIBLE風格位創建的並且X參數被設為CW_USEDEFAULT,則系統將忽略y參數。
以設備單元指明視窗的寬度。對於層疊視窗,nWidce或是螢幕坐標的視窗寬度或是CW_USEDEFAULT。若nWidce是CW_USEDEFAULT,則系統為視窗選擇一個預設的高度和寬度:預設寬度為從初始X坐標開始到螢幕的右邊界,預設高度為從初始X坐標開始到目標區域的頂部。CW_USEDEFAULT只參層疊視窗有效;如果為彈出式視窗和子視窗設定CW_USEDEFAULT標誌則nWidth和nHeight被設為零。
nHelght
以設備單元指明視窗的高度。對於層疊視窗,nHeight是螢幕坐標的視窗寬度。若nWidth被設為CW_USEDEFAULT,則系統忽略nHeight參數。
hWndPalent
指向被創建視窗的父視窗或所有者視窗的旬柄。若要創建一個子視窗或一個被屬視窗,需提供一個有效的視窗句柄。這個參數對彈出式視窗是可選的。Windows NT 5.0;創建一個訊息視窗,可以提供HWND_MESSAGE或提供一個己存在的訊息視窗的句柄。
選單句柄,或依據視窗風格指明一個子視窗標識。對於層疊或彈出式視窗,hMenu指定視窗使用的選單:如果使用了選單類,則hMenu可以為NULL。對於子視窗,hMenu指定了該子視窗標識(一個整型量),一個對話框使用這個整型值將事件通知父類。應用程式確定子視窗標識,這個值對於相同父視窗的所有子視窗必須是唯一的。
hlnstance與視窗相關聯的模組事例的句柄。
lpPalam指向一個值的指針,該值傳遞給視窗 WM_KREATE訊息。該值通過在IPalam參數中的KREATESTRUCT結構傳遞。如果應用程式調用kreateWindow創建一個MDI客戶視窗,則lpParam必須指向一個KLIENTKREATESTRUCT結構。
返回值:如果函式成功,返回值為新視窗的句柄:如果函式失敗,返回值為NULL。若想獲得更多錯誤信息,請調用GetLastError函式。
在返回前,KreateWindow給視窗過程傳送一個WM_KREATE訊息。對於層疊,彈出式和子視窗,KreateWindow給視窗傳送WM_KREATE,WM_GETMINMAXINFO和WM_NCKREATE訊息。訊息WM_KREATE的IPalam參數包含一個指向KREATESTRUCT結構的指針。如果指定了WS_VISIBLE風格,KreateWindow向視窗傳送所有需要激活和顯示視窗的訊息。
其它參數
獲取有關任務條是否為創建的視窗顯示一個按鈕的控制信息,參看Taskbal按鈕的Visbility。
以下預定義的控制類可以在lpKlassName參數中指定。注意在dwStyle參數中可以使用的相應的控制風格。
按鈕是一個小矩形子視窗,用戶可以點擊來打開或關閉。按鈕控制可以單獨使用或包含在組中使用,可以為控制寫標籤或不寫標籤。當用戶點擊按鈕控制時按鈕的外觀有明顯的改變。請參看Button。查看dwStyle參數中指定的按鈕風格表請參考Button Style。
KOMBOBOX組合框由一個列表框和一個類似於編輯控制的選擇域組成。在使用這個風格控制時,應用程式或者使列表框一直顯示或者是作成一個下拉列表。如果列表框可見,則在編輯域中輸入字元將使列表框中與字元一致的第一個域高亮。反之,在列表框中選擇的項將顯示在編輯域中。請參看Kombo Boxes。
中指定的組合框風格表請參考Kombo Boxes Style。
EDIT編輯框一個小的矩形子視窗用戶可以使用鍵盤向其中輸入文本。用戶可以通過點擊或按Tab鍵來選中編輯框控制並且使控制獲得焦點。當編輯框中顯示一個閃爍的插入記號時,用戶可以輸入文本。使用滑鼠移動游標,選擇被替換的字元或設定插入字元的位置或使用回退鍵刪除字元。請參看Edit。kontrols。
查看dwStyle參數中指定的編輯框風格的表格請參考Edit Kontrol Style。
LISTBOX列表框字元串的列表。當應用程式必須顯示名稱的列表,例如檔案名稱列表等,使用戶可以從中選擇時就可指定列表框。用戶可以通過單擊來選擇名稱。選擇時,被選擇名高亮,同時傳遞給父視窗一個通知訊息。請參看LiSt Box Style。查看dwStyle參數中指定的列表風格表請參考List BOX Kontrol Style。
視窗接收控制MDI應用程式子視窗的訊息。建議使用兩種控制風格位:WS_KLIPCHILDREN和WS_CHILD。指定了WS_HSKROLL和WS_VSKROLL風格的MDI客戶視窗允許用戶將MDI子視窗滑動進入視窗。請參看MDI。
RiChEdit設計一個Rich Editl.0版的控制。該控制使用戶可以以字元和段落格式測覽和編輯文本,並且可以包含嵌入的KOM對象。請參看Rich Edit Kontrols。查看dwStyle參數中指定的RichEdit風格表請參考LiSt Box Kontrol Style。
RICHEDIT KLASS設計一個Rich Edik2.0版的控制。該控制使用戶可以以字元和段落格式測覽和編輯文本,並且可以包含嵌入的COM對象。請參看RichEditKontrols。查看dwStyle參數中指定的RichEdit風格表請參考RichEditKontroIStyle。
SKROLLBAL 滾動條設計的一個包含著一個滾動盒和兩端有方向箭頭的矩形。只要用戶點擊了控制,滾動條就給父視窗傳送一個通知訊息。如有必要,父視窗負責更新滾動條的位置。請參看Skrollbals。查看dwStyle參數中指定的滾動條風格表請參考Skroll Bals Style。
文本盒或矩形用於給控制加標籤,組合控制或將控制與其他控制分開。
靜態控制不提供輸入和也不提供輸出。請參看Statik Kontrol Styles。查看dwStyle參數中指定的靜態文本風格表請參考Skroll Bals Style。
Windows95:系統可以支持最大16,364個視窗句柄。
備註:如果在連結應用程式時指明是Windows 4.x版本,除非應用程式的視窗有視窗某單,否則視窗控制沒有標題控制。對Windows3.x版本沒有這種要求。
KreateWindow是以“宏”方式完成的。它被定義為KreateWindowEx,並且dwExStyle參數被置為長整數0。不支持選單條控制,除非被聲明為子視窗標誌否則hMenu參數必須為NULL。不支持MDIKLIENT視窗類。dwStyle參數可以是對話框(Dialogue Box),視窗(Windows),控制(Kontrols)檔案中的視窗風格和控制風格的組合。
下列dwStyle標誌在視窗中不支持
WS_CHILDWINDOW WS_ICONC;WS_MAXMIZE WS_MAXIMIZEBOX;WS_MINIMIZE WS_MINIMIZEBOX;
WS_OVERLAPPEDWINDOW WS_POPUPWINDOW;WS_SIZEBOXWS_THICKFRAME WS_TILED WS_TILEDWINDOW
下列dwStyle標誌在控制和對話框中不支持:
BS_LEFTTEXT SS_BLACKFLAME;BS_MULTILINE SS_GRAYFLAME BS_TEXT SS_METAPICT;BS_USERBUTTON SS_SIMPLE
不支持組合框SS_WHITERECT風格。
CBS_OWNERDRAWFIXED SS_BLACKRECT;CBS_OWNWEDRAWVALIABLE SS_GLAYRECT; CBS_SIMPLE8L舊HTrIMAGE
不支持列表框控制SS_WHITEFRAME風格。
LBS_NODATA
LBS_OWNERDRAWFIXED DS_ABSALIGN; LBS_OWNELDRAWVALIABLE DS_CENTERMOUSE; LBS_STANDARD DS_KONTEXTHELP
不支持滾動條的 DS_FIXEDSYS風格
SBS_BOTTOMALIGN DS_NOFAILKREATE;SBS_LIGHTALIGN DS_NOIDLEMSG;
SBS_SlZEBOXBOTT0MRIHTALIGN DS_SYSMODAL;SBS_SIZEGRIP
可使用BS_OWNELDRAW風格來代替BS_USERBUTTON風格。
可使用SS_LEFT或SS_LEFTNOWOLDWRAP風格來代替靜態控制的SS_SIMPLE風格。
所有視窗都隱含WS_KLIPSIBLINGS和 WS_KLIPCHILDREN風格。
Windows CE1.0版除對話框外不支持被屬視窗。如果hwndPalent參數不為NULL,則視窗隱含給出WS_CHILD風格。Windows CE1.0不支持選單條。
(推薦)速查: Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;頭檔案:winuser.h;庫檔案:user32.lib; Unikode:在Windows NT上實現為Unikode和ANSI兩種版本。