CreateWindow函數介紹

來源:互聯網
上載者:User
函數功能:該函數建立一個重疊式視窗、彈出式視窗或子視窗。它指定視窗類別,視窗標題,視窗風格,以及視窗的初始位置及大小(可選的)。該函數也指定該視窗 的父視窗或所屬視窗(如果存在的話),及視窗的菜單。若要使用除CreateWindow函數支援的風格外的擴充風格,則使用 CreateWindowEx函數代替CreateWindow函數。
    函數原型:HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HANDLE hlnstance,LPVOID lpParam);

    參數:
    lpClassName:指 向一個空結束的字串或整型數atom。如果該參數是一個整型量,它是由此前調用theGlobalAddAtom函數產生的全域量。這個小於 0xC000的16位元必須是lpClassName參數位低16位,該參數的高位必須是0。如果lpClassName是一個字串,它指定了視窗的 類名。這個類名可以是任何用函數RegisterClassEx註冊的類名,或是任何預定義的控制類名。請看說明部分的列表。
    lpWindowName:指向一個指定視窗名的空結束的字串指標。
    如果視窗風格指定了標題條,由lpWindowName指向的視窗標題將顯示在標題條上。當使用Createwindow函數來建立控制例如按鈕,選擇框和靜態控制時,可使用lpWindowName來指定控制文本。
    dwStyle:指定建立視窗的風格。該參數可以是下列視窗風格的組合再加上說明部分的控制風格。風格意義:    WS_BORDER:建立一個單邊框的視窗。
    WS_CAPTION:建立一個有標題框的視窗(包括WS_BORDER風格)。
    WS_CHILD:建立一個子視窗。這個風格不能與WS_POPUP風格合用。
    WS_CHILDWINDOW:與WS_CHILD相同。
    WS_CLIPCHILDREN:當在父視窗內繪圖時,排除子視窗地區。在建立父視窗時使用這個風格。    WS_CLIPSIBLINGS:排除子視窗之間的相對地區,也就是,當一個特定的視窗接收到WM_PAINT訊息時,WS_CLIPSIBLINGS 風格將所有層疊視窗排除在繪圖之外,只重繪指定的子視窗。如果未指定WS_CLIPSIBLINGS風格,並且子視窗是層疊的,則在重繪子視窗的客戶區時,就會重繪鄰近的子視窗。    WS_DISABLED:建立一個初始狀態為禁止的子視窗。一個禁止狀態的視窗不能接受來自使用者的輸人資訊。
    WS_DLGFRAME:建立一個帶對話方塊邊框風格的視窗。這種風格的視窗不能帶標題條。
    WS_GROUP:指定一組控制的第一個控制。這個控制組由第一個控制和隨後定義的控制組成,自第二個控制開始每個控制,具有WS_GROUP風格,每個組的第一個控制帶有WS_TABSTOP風格,從而使使用者可以在組間移動。使用者隨後可以使用游標在組內的控制間改變鍵盤焦點。
    WS_HSCROLL:建立一個有水平捲軸的視窗。
    WS_ICONIC:建立一個初始狀態為最小化狀態的視窗。與WS_MINIMIZE風格相同。
    WS_MAXIMIZE:建立一個初始狀態為最大化狀態的視窗。
    WS_MAXIMIZEBOX:建立一個具有最大化按鈕的視窗。該風格不能與WS_EX_CONTEXTHELP風格同時出現,同時必須指定WS_SYSMENU風格。
    WS_MINIMIZE:建立一個初始狀態為最小化狀態的視窗。與WS_ICONIC風格相同。
    WS_MINIMIZEBOX:建立一個具有最小化按鈕的視窗。該風格不能與WS_EX_CONTEXTHELP風格同時出現,同時必須指定WS_SYSMENU風格。
    WS_OVERLAPPED:產生一個層疊的視窗。一個層疊的視窗有一個標題條和一個邊框。與WS_TILED風格相同。
    WS_OVERLAPPEDWINDOW:建立一個具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXMIZEBOX風格的層疊視窗,與WS_TILEDWINDOW風格相同。
    WS_POPUP:建立一個彈出式視窗。該風格不能與WS_CHLD風格同時使用。
    WS_POPUWINDOW:建立一個具有WS_BORDER,WS_POPUP,WS_SYSMENU風格的視窗,WS_CAPTION和WS_POPUPWINDOW必須同時設定才能使視窗某單可見。
    WS_SIZEBOX:建立一個可調邊框的視窗,與WS_THICKFRAME風格相同。
    WS_SYSMENU:建立一個在標題條上帶有視窗菜單的視窗,必須同時設定WS_CAPTION風格。
    WS_TABSTOP:建立一個控制,這個控制在使用者按下Tab鍵時可以獲得鍵盤焦點。按下Tab鍵後使鍵盤焦點轉移到下一具有WS_TABSTOP風格的控制。
    WS_THICKFRAME:建立一個具有可調邊框的視窗,與WS_SIZEBOX風格相同。
    WS_TILED:產生一個層疊的視窗。一個層疊的視窗有一個標題和一個邊框。與WS_OVERLAPPED風格相同。
    WS_TILEDWINDOW:建立一個具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU MS_THICKFRAME.
    WS_MINIMIZEBOX,WS_MAXMIZEBOX風格的層疊視窗。與WS_OVERLAPPEDWINDOW風格相同。
    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參數。
    nWidth:以 裝置單元指明視窗的寬度。對於層疊視窗,nWidth或是螢幕座標的視窗寬度或是CW_USEDEFAULT。若nWidth是 CW_USEDEFAULT,則系統為視窗選擇一個預設的高度和寬度:預設寬度為從初始X座標開始到螢幕的右邊界,預設高度為從初始X座標開始到目的地區域 的頂部。CW_USEDEFAULT只參層疊視窗有效;如果為彈出式視窗和子視窗設定CW_USEDEFAULT標誌則nWidth和nHeight被設為零。
    nHeight:以裝置單元指明視窗的高度。對於層疊視窗,nHeight是螢幕座標的視窗寬度。若nWidth被設為CW_USEDEFAULT,則系統忽略nHeight參數。
    hWndParent:指向被建立視窗的父視窗或所有者視窗的旬柄。若要建立一個子視窗或一個被屬視窗,需提供一個有效視窗控制代碼。這個參數對彈出式窗日是可選的。Windows NT 5.0;建立一個訊息視窗,可以提供HWND_MESSAGE或提供一個己存在的訊息視窗的控制代碼。
    hMenu:菜 單控制代碼,或依據視窗風格指明一個子視窗標識。對於層疊或彈出式視窗,hMenu指定視窗使用的菜單:如果使用了菜單類,則hMenu可以為NULL。對於 子視窗,hMenu指定了該子視窗標識(一個整型量),一個對話方塊使用這個整型值將事件通知父類。應用程式確定子視窗標識,這個值對於相同父視窗的所有子 視窗必須是唯一的。
    hInstance:與視窗相關聯的模組案例的控制代碼。
    lpParam:指向一個值的指標,該值傳遞給視窗 WM_CREATE訊息。該值通過在lParam參數中的CREATESTRUCT結構傳遞。如果應用程式調用CreateWindow建立一個MDI客戶視窗,則lpParam必須指向一個CLIENTCREATESTRUCT結構。
    傳回值:如果函數成功,傳回值為新視窗的控制代碼:如果函數失敗,傳回值為NULL。若想獲得更多錯誤資訊,請調用GetLastError函數。
    備忘:在返回前,CreateWindow給視窗過程發送一個WM_CREATE訊息。對於層疊,彈出式和子視窗,CreateWindow給視窗發送 WM_CREATE,WM_GETMINMAXINFO和WM_NCCREATE訊息。訊息WM_CREATE的lParam參數包含一個指向 CREATESTRUCT結構的指標。如果指定了WS_VISIBLE風格,CreateWindow向視窗發送所有需要啟用和顯示視窗的訊息。
    擷取有關任務條是否為建立的視窗顯示一個按鈕的控制資訊,參看Taskbar按鈕的Visbility。
   
以下預定義的控制類可以在lpClassName參數中指定。注意在dwStyle參數中可以使用的相應的控制風格。

    BUTTON:按鈕,是一個小矩形子視窗,使用者可以點擊來開啟或關閉。按鈕控制可以單獨使用或包含在組中使用,可以為控制寫標籤或不寫標籤。當使用者點擊按鈕控制時按鈕的外觀有明顯的改變。請參看Button。查看dwStyle參數中指定的按鈕風格表請參考Button Style。
    COMBOBOX:組合框,由一個列表框和一個類似於編輯控制的選擇域組成。在使用這個風格控制時,應用程式或者使列表框一直顯示或者是作成一個下拉式清單。如果列表框可見,則在編輯域中輸入字元將使列表框中與字元一致的第一個域高亮。反之,在列表框中選擇的項將顯示在編輯域中。請參看Combo Boxes。
    查看dwStyle參數中指定的組合框風格表請參考Combo Boxes Style。
    EDIT:編輯框,一 個小的矩形子視窗,使用者可以使用鍵盤向其中輸入文本。使用者可以通過點擊或按Tab鍵來選中編輯框控制並且使控制獲得焦點。當編輯框中顯示一個閃爍的插入記 號時,使用者可以輸入文本。使用滑鼠移動游標,選擇被替換的字元或設定插入字元的位置或使用回退鍵刪除字元。請參看Edit controls。
    查看dwStyle參數中指定的編輯框風格的表格請參考Edit Control Style。
    LISTBOX:列表框,字串的列表。當應用程式必須顯示名稱的列表,例如檔案名稱列表等,使使用者可以從中選擇時就可指定列表框。使用者可以通過單擊來選擇名稱。選擇時,被選擇名高亮,同時傳遞給父視窗一個通知訊息。請參看LiSt Box Style。查看dwStyle參數中指定的列表風格表請參考List BOX Control Style。
    MDICLIENT:客 戶設計出MDI客戶視窗。視窗接收控制MDI應用程式子視窗的訊息。建議使用兩種控制風格位:WS_CLIPCHILDREN和WS_CHILD。指定了 WS_HSCROLL和WS_VSCROLL風格的MDI客戶視窗允許使用者將MDI子視窗滑動進入視窗。請參看MDI。
    RichEdit:設計一個Rich Editl.0版的控制。該控制使使用者可以以字元和段落格式測覽和編輯文本,並且可以包含嵌入的COM對象。請參看Rich Edit Controls。查看dwStyle參數中指定的RichEdit風格表請參考List Box Control Style。
    RICHEDIT_CLASS:設計一個Rich Edik2.0版的控制。該控制使使用者可以以字元和段落格式測覽和編輯文本,並且可以包含嵌入的COM對象。請參看RichEditControls。查看dwStyle參數中指定的RichEdit風格表請參考RichEditControIStyle。
    SCROLLBAR: 捲軸,設計的一個包含著一個滾動盒和兩端有方向箭頭的矩形。只要使用者點擊了控制,捲軸就給父視窗發送一個通知訊息。如有必要,父視窗負責更新捲軸的位置。請參看ScrollBars。查看dwStyle參數中指定的捲軸風格表請參考Scroll Bars Style。
    STATIC:一個簡單的靜態文字欄位,文本盒或矩形用於給控制加標籤,組合控制或將控制與其他控制分開。
    靜態控制不提供輸入和也不提供輸出。請參看Static Control Styles。查看dwStyle參數中指定的靜態文本風格表請參考Scroll Bars Style。

    Windows95:系統可以支援最大16,364個視窗控制代碼。

    備忘:如果在連結應用程式時指明是Windows 4.x版本,除非應用程式的視窗有視窗某單,否則視窗控制沒有標題控制。對Windows3.x版本沒有這種要求。

    Windows CE:CreateWindow是以“宏”方式完成的。它被定義為CreateWindowEX,並且dwExStyle參數被置為長整數0。不支援菜單 條控制,除非被聲明為子視窗標誌否則hMenu參數必須為NULL。不支援MDICLIENT視窗類別。dwStyle參數可以是對話方塊(Dialogue Box),視窗(Windows),控制(Controls)檔案中的視窗風格和控制風格的組合。
    下列dwStyle標誌在視窗中不支援:
    WS_CHILDWINDOW;WS_ICONIC;WS_MAXIMIZE;WS_MAXIMIZEBOX;WS_MINIMIZE;WS_MINIMIZEBOX;
    WS_OVERLAPPEDWINDOW;WS_POPUPWINDOW;WS_SIZEBOX;WS_THICKFRAME;WS_TILED;WS_TILEDWINDOW
    下列dwStyle標誌在控制和對話方塊中不支援:
    不支援的按鈕風格和靜態控制風格:
    BS_LEFTTEXT;BS_MULTILINE;BS_TEXT;BS_USERBUTTON;
    不支援的靜態控制風格:SS_BLACKFRAME;SS_GRAYFRAME;SS_METAPICT; SS_SIMPLE;SS_WHITERECT;SS_BLACKRECT;SS_GRAYRECT;SS_RIGHTIMAGE;SS_WHITEFRAME
    不支援組合框風格。
    CBS_OWNERDRAWFIXED;CBS_OWNWEDRAWVARIABLE;CBS_SIMPLE
    不支援列表框控制風格。
    LBS_NODATA;LBS_OWNERDRAWFIXED;LBS_OWNERDRAWVARIABLE;LBS_STANDARD
    不支援的對話方塊風格:
     DS_ABSALIGN;DS_CENTERMOUSE;DS_CONTEXTHELP;DS_FIXEDSYS;DS_NOFAILCREATE;DS_NOIDLEMSG;DS_SYSMODAL;
    不支援捲軸的風格
    SBS_BOTTOMALIGN SBS_RIGHTALIGN;SBS_SlZEBOXBOTT0MRIHTALIGN;SBS_SIZEGRIP
    可使用BS_OWNERDRAW風格來代替BS_USERBUTTON風格。
    可使用SS_LEFT或SS_LEFTNOWORDWRAP風格來代替靜態控制的SS_SIMPLE風格。
    不支援MDICLIENT視窗類別。
    所有視窗都隱含WS_CLIPSIBLINGS和 WS_CLIPCHILDREN風格。
    Windows CE1.0版除對話方塊外不支援被屬視窗。如果hwndParent參數不為NULL,則視窗隱含給出WS_CHILD風格。Windows CE1.0不支援菜單條。

    速查: Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;標頭檔:winuser.h;庫檔案:user32.lib; Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.