Win32API: CreateWindowEx

ウィンドウを生成します。


定義
Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (
    dwExStyle    As DWord,
    lpClassName  As BytePtr,
    lpWindowName As BytePtr,
    dwStyle      As DWord,
    x            As Long,
    y            As Long,
    nWidth       As Long,
    nHeight      As Long,
    hWndParent   As HWND,
    hMenu        As HMENU,
    hInstance    As HINSTANCE,
    lpParm       As VoidPtr) As HWND
dwExStyle
ウィンドウの拡張スタイルを指定します。詳しい情報は「拡張スタイルについて」をご覧下さい。

lpClassName
クラス名を指定します。クラスは、あらかじめRegisterClassEx関数で登録したものか、定義済みコントロールを指定する必要があります。
定義済みコントロールのについての詳しい情報は下の「ウィンドウクラス」を参照して下さい。
省略した場合はクラス名"NORMAL"が設定されます。

lpWindowName
ウィンドウのタイトルバーに表示する文字列へのポインタを指定します。

dwStyle
ウィンドウスタイルを指定します。スタイル定数をOR演算で組み合わせて下さい。
スタイル定数の説明は下の「ウィンドウスタイル定数」を参照して下さい。

x
ウィンドウのX座標を指定します。CW_USEDEFAULT を指定すると適当な座標が設定されます。

y
ウィンドウのY座標を指定します。CW_USEDEFAULT を指定すると適当な座標が設定されます。

nWidth
ウィンドウの幅を指定します。CW_USEDEFAULT を指定すると適当な幅が設定されます。

nHeight
ウィンドウの高さを指定します。CW_USEDEFAULT を指定すると適当な高さが設定されます。

hWndParent
親ウィンドウのハンドルを指定します。0 を指定するとデスクトップが親ウィンドウになります。

hMenu
作成するウィンドウがオーバーラップまたはポップアップ ウィンドウのときは、メニュー ハンドルを指定します(不要なときは0を指定することができます)。子ウィンドウのときは、子ウィンドウIDを指定します。

hInstance
ウィンドウに関連付けられるモジュールのインスタンスハンドルを指定します。呼び出し側モジュールのインスタンスハンドルはGetModuleHandle関数で取得することができます。

lpParm
WM_CREATEメッセージのlParamにセットされる CREATESTRUCT 構造体へのポインタを指定します。不要なときは、NULL を指定することができます。

定義済みのウィンドウクラス

クラス名概要
"BUTTON"ボタンコントロールです。
"COMBOBOX"リストボックスとエディットウィンドウを組み合わせたものです。
"EDIT"テキスト入力ウィンドウです。
"LISTBOX"文字列のリストを表示します。
"MDICLIENT"MDIクライアントウィンドウです。
"NORMAL"背景が白のノーマルなウィンドウです。
"PROMPT"プロンプトの標準入出力機能が使用できるウィンドウです。
"SCROLLBAR"スクロールバーです。
"STATIC"文字列を表示するウィンドウです。

ウィンドウスタイル定数

※標準ウィンドウスタイル
定数説明
WS_BORDER境界線を持つウィンドウを作成します。
WS_CAPTIONタイトルバーを持つウィンドウを作成します(WS_BORDERも含みます)。
WS_CHILD子ウィンドウを作成します。
WS_CHILDWINDOWWS_CHILDと同じです。
WS_CLIPCHILDREN親ウィンドウ内部を描画するときに、子ウィンドウが占める領域を除外します(親ウィンドウを作成する場合に使用できます)。
WS_CLIPSIBLINGS兄弟関係にあるウィンドウをクリップします。
WS_DISABLED無効(使用不可能)なウィンドウを作成します。
WS_DLGFRAMEダイアログボックスでよく見られる、境界を持つウィンドウを作成します。
WS_GROUPコントロールグループの最初のコントロールを示します。
WS_HSCROLL水平スクロールバーを持つウィンドウを作成します。
WS_ICONICWS_MINIMIZEと同じです。
WS_MAXIMIZE最大化したウィンドウを作成します。
WS_MAXIMIZEBOX最大化ボタンを持つウィンドウを作成します。
WS_MINIMIZE最小化したウィンドウを作成します。
WS_MINIMIZEBOX最小化ボタンを持つウィンドウを作成します。
WS_OVERLAPPEDオーバーラップウィンドウを作成します。タイトルバーと枠を持ちます。
WS_OVERLAPPEDWINDOWWS_OVERLAPPED、WS_CAPTION、WS_SYSMENU、WS_THICKFRAME、WS_MAXIMIZEBOX、WS_MINIMIZEBOXを組み合わせたものです。
WS_POPUPポップアップウィンドウを作成します(WS_CHILDと一緒に使用しないで下さい)。
WS_POPUPWINDOWWS_BORDER、WS_POPUP、WS_SYSMENUを組み合わせたものです。
WS_SIZEBOXWS_THICKFRAMEと同じです。
WS_SYSMENUタイトルバー上にウィンドウメニューを持つウィンドウを作成します。
WS_TABSTOPユーザーがTABキーを押すと入力フォーカスを受けるコントロールを指定します。
WS_THICKFRAMEサイズ変更境界を持つウィンドウを作成します。
WS_TILEDWS_OVERLAPPEDと同じです。
WS_TILEDWINDOWWS_OVERLAPPEDWINDDOWと同じです。
WS_VISIBLE可視状態のウィンドウを作成します。
WS_VSCROLL垂直スクロールバーを持つウィンドウを作成します。

※BUTTONクラスでのスタイル
定数説明
BS_3STATE選択された状態、選択されていない状態、グレー表示の状態という3つの状態を持つチェックボックスを作成します。グレーの状態は、チェックボックスの状態が決められていないことを示すときなどに使います。
BS_AUTO3STATEBS_3STATEと同じボタンを作成します。ただし、ユーザーがチェックボックスを選択するとボックスの状態が自動的に変わります。
BS_AUTOCHECKBOXチェックボックスを作成します。ただし、ユーザーがチェックボックスを選択するとボックスの状態が自動的に変わります。
BS_AUTORADIOBUTTONラジオボタンを作成します。ただし、ユーザーがボタンを選択すると、Windowsが自動的にボタンを選択状態にし、同じグループのほかのボタンを非選択状態にします。
BS_CHECKBOXチェックボックスを作成します。
BS_DEFPUSHBUTTONプッシュボタンを作成します。ただし、黒色の太い境界も持ちます。このボタンがダイアログボックスにある場合は、ボタンが入力フォーカスを持っていなくても、エンターキーを押せばボタンを選択できます。
BS_GROUPBOXグループボックスを作成します。ほかのコントロールを、このコントロールの中にグループ化できます。
BS_LEFTTEXTラジオボタンスタイルやチェックボックススタイルと組み合わせると、ラジオボタンの円やチェックボックスの四角の左側にテキストが置かれます。BS_RIGHTBUTTONスタイルを同じです。
BS_OWNERDRAWオーナー描画ボタンを作成します。オーナーウィンドウは、ボタンが作成されるとWM_MEASUREITEMメッセージを受け取り、ボタンの外観が変わるとWM_DRAWITEMメッセージを受け取ります。他のボタンスタイルと組み合わせることはできません。
BS_PUSHBUTTONプッシュボタンを作成します。
BS_RADIOBUTTONラジオボタンを作成します。
BS_BITMAPビットマップを表示するボタンを作成します。
BS_BOTTOMボタンの下部にテキストを置きます。
BS_CENTERボタンの中央にテキスト置きます。
BS_ICONアイコンを表示するボタンを作成します。
BS_LEFTボタンの中にテキストを左寄せします。ボタンがBS_RIGHTBUTTONスタイルを持たないチェックボックス(またはラジオボタン)の場合は、テキストはチェックボックスやラジオボタンの右側に左寄せされます。
BS_MULTILINEテキストが長すぎてボタンの中に一行で収まらないときは、テキストを複数行に折り返します。
BS_NOTIFY親ウィンドウに、ボタンがBN_DBLCLK通知メッセージ、BN_KILLFOCUS通知メッセージ、BN_SETFOCUS通知メッセージを送ることを可能にします。このスタイルを持つかどうかに関わらず、ボタンはBN_CLICKED通知メッセージを送ります。
BS_PUSHLIKEプッシュボタンのような概観と機能を持つ、チェックボックスまたはラジオボタンを作ります。
BS_RIGHTボタンの中にテキストを右寄せします。ボタンがBS_RIGHTBUTTONスタイルを持たないチェックボックス(またはラジオボタン)の場合は、テキストはチェックボックスやラジオボタンの右側に右寄せされます。
BS_RIGHTBUTTONBS_LEFTTEXT スタイルと同じです。
BS_TEXTボタンがテキストを表示するよう指定します。
BS_TOPボタンの最上部にテキストを置きます。
BS_VCENTERボタンの(垂直方向の)中央にテキストを置きます。

※COMBOBOXクラスでのスタイル
定数説明
CBS_AUTOHSCROLLユーザーが行末に文字を入力すると、エディットコントロール内のテキストが自動的に右スクロールします。このスタイルを設定しないと、エディットコントロールの枠内に収まるテキストしか入力できません。
CBS_DISABLENOSCROLLスクロールするほどの項目数がない場合、リストボックスの垂直方向のスクロールバーが無効状態で表示されます。通常は表示されません。
CBS_DROPDOWNドロップダウンコンボボックスを作成します。CBS_SIMPLEに似ていますが、ユーザーがエディットコントロールの横にあるアイコンを選択しないとリストボックスが表示されません。
CBS_DROPDOWNLISTドロップダウンリストボックスを作成します。CBS_DROPDOWN に似ていますが、テキストの編集はできません。
CBS_HASSTRINGSオーナー描画コンボボックスの持つ項目が、文字列であることを指定します。コンボボックスが文字列用のメモリとアドレスを管理するので、アプリケーションはCB_GETLBTEXTメッセージを使用して特定項目のテキストを取り出すことができます。
CBS_LOWERCASEコンボボックスのエディットコントロールに入力された大文字を、小文字に変換します。
CBS_NOINTEGRALHEIGHTコンボボックスのサイズを指定します。通常は、項目が途中で切れないように、Windowsシステムがコンボボックスのサイズを調整します。
CBS_OEMCONVERTコンボボックスのエディットコントロールに入力されたテキストを変換します。テキストはWindows文字セットからOEM文字セットに変換され、その後にまたWindows文字セットに変換されます。
CBS_OWNERDRAWFIXED各項目の高さがすべて同じ、オーナー描画コンボボックスを作成します。
CBS_OWNERDRAWVARIABLE各項目の高さが可変の、オーナー描画コンボボックスを作成します。
CBS_SIMPLE常時リストボックスが表示されるコンボボックスを作成します。リストボックス内の現在の選択項目は、エディットコントロール内に表示されます。
CBS_SORTリストボックスに追加された文字列を自動的に並べ替えます。
CBS_UPPERCASEコンボボックスのエディットコントロールに入力された小文字を、大文字に変換します。

※EDITクラスでのスタイル
定数説明
ES_AUTOHSCROLLユーザーが行末に文字を入力すると、エディットコントロール内のテキストが自動的に右スクロールします。
ES_AUTOVSCROLLユーザーが最下行でエンターキーを押すと、テキストを自動的に上にスクロールします。
ES_CENTER複数行エディットコントロールにおいて、テキストを中央揃えで表示します。
ES_LEFTテキストを左揃えで表示します。
ES_LOWERCASEエディットコントロールに入力された文字を、小文字に変換します。
ES_MULTILINE複数行エディットコントロールを作成します。デフォルトは一行のエディットコントロールです。ダイアログボックス内の複数行エディットコントロールで[Enter]キーを押すと、デフォルトのボタンがアクティブになります。エンターキーを改行のために使うには、ES_WANTRETURNスタイルを使用します
ES_NOHIDESELエディットコントロール内の選択文字列のデフォルトの動作を無効にします。デフォルトでは、コントロールが入力フォーカスを失うと選択項目が表示されなくなり、入力フォーカスを受け取ると反転表示されます。ES_NOHIDESELを指定すると、選択されたテキストは、コントロールがフォーカス持っていない場合も反転表示されます。
ES_NUMBER数字だけが入力できるようにします。
ES_OEMCONVERTエディットコントロールに入力されたテキストを変換します。テキストはWindows文字セットから OEM 文字セットに変換され、その後にまたWindows文字セットに変換されます。
ES_PASSWORDエディットコントロールに入力された文字を、アスタリスク「*」で置き換えて表示します。表示する文字を変更するには、EM_SETPASSWORDCHARメッセージを使います。
ES_READONLYユーザーによるテキストの入力や編集をできなくします。
ES_RIGHT複数行エディットコントロールにおいて、テキストを右揃えで表示します。
ES_UPPERCASEエディットコントロールに入力された文字を、大文字に変換します。
ES_WANTRETURNダイアログボックス内の複数行エディットコントロールにテキストを入力しているときにエンターキーが押されると、改行が挿入されるようにします。このスタイルを指定していないと、ダイアログボックスのデフォルトのプッシュボタンが押されます。このスタイルは、一行のエディットコントロールでは効果がありません。

※LISTBOXクラスでのスタイル
定数説明
LBS_DISABLENOSCROLLスクロールするほどの項目数がない場合、リストボックスの垂直方向のスクロールバーが無効状態で表示されます。通常はスクロールバーは表示されません。
LBS_EXTENDEDSELシフトキーとマウス、または特殊なキーの組み合わせで、複数の項目を選択できるようにします。
LBS_HASSTRINGSリストボックスの項目が、文字列であることを指定します。リストボックスが文字列用のメモリとアドレスを管理するので、アプリケーションはLB_GETTEXTメッセージを使用して特定項目のテキストを取り出すことができます。デフォルトでは、オーナー描画のリストボックス以外のすべてのリストボックスが、このスタイルを持ちます。
LBS_MULTICOLUMN水平にスクロールする複数列のリストボックスを指定します。LB_SETCOLUMNWIDTHメッセージで列の幅を設定します。
LBS_MULTIPLESEL項目をクリックまたはダブルクリックして、複数の項目を選択できるようにします。
LBS_NODATAデータを持たないリストボックスを指定します。リストボックス内の項目数が1000を超えるときに、このスタイルを指定します。データを持たないリストボックスには、LBS_OWNERDRAWFIXEDスタイルが必要です。 LBS_SORT スタイルやLBS_HASSTRINGSスタイルは設定できません。項目に文字列やビットマップデータを持たないことを除くと、データを持たないリストボックスはオーナー描画リストボックスに似ています。項目の追加、挿入、削除のコマンドは常に無視されます。文字列の検索は、常に失敗します。
LBS_NOINTEGRALHEIGHTリストボックスのサイズを指定します。通常は、項目が途中で切れないように、Windowsシステムがリストボックスのサイズを調整します。
LBS_NOREDRAW項目が変更されてもリストボックスの外観を更新しないように指定します。このスタイルは、WM_SETREDRAWメッセージを送ることでいつでも変更できます。
LBS_NOSEL表示するだけで選択できない項目を持つリストボックスを指定します。
LBS_NOTIFYユーザーがリストボックス内の文字列をクリック(またはダブルクリック)するたびに、親ウィンドウに入力メッセージを通知します。
LBS_OWNERDRAWFIXED各項目の高さがすべて同じ、オーナー描画リストボックスを作成します。
LBS_OWNERDRAWVARIABLE各項目の高さがすべて可変の、オーナー描画リストボックスを作成します。
LBS_SORTリストボックス内の文字列をアルファベット順にソートします。
LBS_STANDARDリストボックス内の文字列をアルファベット順にソートします。ユーザーが文字列をクリック(またはダブルクリック)するたびに、親ウィンドウは入力メッセージを受け取ります。リストボックスは四方に境界を持ちます。
LBS_USETABSTOPS文字列を描画するときに、リストボックスがタブ文字を認識し、展開できるようにします。デフォルトのタブ位置は32ダイアログボックス単位です。
LBS_WANTKEYBOARDINPUTユーザーがキーを押してリストボックスが入力フォーカスを持つたびに、リストボックスのオーナーがWM_VKEYTOITEMメッセージを受けるようにします。これにより、キーボード入力に特殊な処理を行えるようになります。

※SCROLLBARクラスでのスタイル
定数説明
SBS_BOTTOMALIGNスクロールバーの下端を、Window 命令語の x、y、width、heightパラメータで指定した長方形の下端にそろえます。スクロールバーの高さはデフォルトの高さになります。このスタイルはSBS_HORZスタイルと一緒に使います。
SBS_HORZ水平スクロールバーを作成します。SBS_BOTTOMALIGNスタイルもSBS_TOPALIGNスタイルも指定しないと、スクロールバーはWindow 命令語の x、y、width、heightパラメータで指定した位置とサイズになります。
SBS_LEFTALIGNスクロールバーの左端を、Window 命令語の x、y、width、heightパラメータで指定した長方形の左端にそろえます。スクロールバーの幅は、デフォルトの幅になります。このスタイルはSBS_VERTスタイルと一緒に使います。
SBS_RIGHTALIGNスクロールバーの右端を、Window 命令語の x、y、width、height パラメータで指定した長方形の右端にそろえます。スクロールバーの幅は、デフォルトの幅になります。このスタイルはSBS_VERTスタイルと一緒に使います。
SBS_SIZEBOXサイズボックスを作成します。
SBS_SIZEBOXBOTTOMRIGHTALIGNサイズボックスの右下隅を、Window 命令語の x、y、width、heightパラメータで指定した長方形の右下隅にそろえます。サイズボックスのサイズは、デフォルトのサイズになります。このスタイルはSBS_SIZEBOXスタイルと一緒に使います。
SBS_SIZEBOXTOPLEFTALIGNサイズボックスの左上隅を、Window 命令語の x、y、width、heightパラメータで指定した長方形の左上隅にそろえます。サイズボックスのサイズは、デフォルトのサイズになります。このスタイルはSBS_SIZEBOXスタイルと一緒に使います。
SBS_SIZEGRIPSBS_SIZEBOXスタイルと同じです。ただし、縁が盛り上がります。
SBS_TOPALIGNスクロールバーの上端を、Window 命令語の x、y、width、heightパラメータで指定した長方形の上端にそろえます。スクロールバーの高さは、デフォルトの高さになります。このスタイルはSBS_HORZスタイルと一緒に使います。
SBS_VERT垂直スクロールバーを作成します。

※STATICクラスでのスタイル
定数説明
SS_BITMAPビットマップを表示するスタティックコントロールを作成します。widthとheightパラメータは無視され、ビットマップに合わせてコントロールのサイズが調整されます。
SS_BLACKFRAMEウィンドウの枠と同じ色の枠を持つボックスを作成します。Windowsのデフォルトの配色は黒です。
SS_BLACKRECTウィンドウの枠と同じ色で塗りつぶされた長方形を作成します。Windowsのデフォルトの配色は黒です。
SS_CENTERテキストを中央揃えで表示します。テキストが行末を超える場合は自動的に折り返されます。
SS_CENTERIMAGEコントロールのサイズが変更されても、SS_BITMAPスタイルやSS_ICONスタイルを持つスタティックコントロールの中心点は変えないようにします。
SS_GRAYFRAME画面の背景(デスクトップ)と同じ色の枠を持つボックスを作成します。Windowsのデフォルトの配色は灰色です。
SS_GRAYRECT画面の背景(デスクトップ)と同じ色で塗りつぶされた長方形を作成します。Windowsのデフォルトの配色は灰色です。
SS_ICONアイコンを表示するスタティックコントロールを作成します。widthとheightパラメータは無視され、アイコンに合わせてコントロールのサイズが調整されます。
SS_LEFTテキストを左揃えで表示します。テキストが行末を超える場合は自動的に折り返されます。
SS_LEFTNOWORDWRAPテキストを左揃えで表示します。タブは展開されますが、テキストは折り返されません。行末を超えるテキストはクリップされます。
SS_METAPICTメタファイルを表示するスタティックコントロールを作成します。メタファイルは、コントロールのサイズに合わせた大きさで表示されます。
SS_NOPREFIXコントロールのテキスト中のアンパサント「&」文字を、アクセラレータのプリフィックス文字として解釈しないように指定します。このスタティックコントロールスタイルは、定義されているどのようなスタティックコントロールとも組み合わせて指定できます。アプリケーションは、ビット演算子OR使って、SS_NOPREFIXスタイルを他のスタイルと組み合わせることができます。ダイアログボックスのスタティックコントロール内に、アンパサント「&」を含むファイル名やその他の文字列を表示する必要があるときに便利です。
SS_NOTIFYユーザーがコントロールをクリック(またはダブルクリック)するたびに、親ウィンドウにSTN_CLICKED通知メッセージ(または STN_DBLCLK 通知メッセージ)を送ります。
SS_RIGHTテキストを右揃えで表示します。
SS_RIGHTIMAGEコントロールのサイズが変更されても、SS_BITMAPスタイルやSS_ICONスタイルを持つスタティックコントロールの右下隅は変えないようにします。
SS_SIMPLE単一行のテキストを左揃えで表示します。このコントロールの親ウィンドウやダイアログボックスはWM_CTLCOLORSTATICメッセージを処理してはいけません。
SS_WHITEFRAMEウィンドウの背景と同じ色の枠を持つボックスを作成します。Windowsのデフォルトの配色は白です。
SS_WHITERECTウィンドウの背景と同じ色の枠で塗りつぶされた長方形を作成します。Windowsのデフォルトの配色は白です。

※ダイアログボックススタイル
定数説明
DS_3DLOOKダイアログボックスを立体的に表示します。現在のバージョンのWindows用にコンパイルされたアプリケーションが作成するダイアログボックスには、自動的に立体的な外観が適用されます。
DS_ABSALIGNダイアログボックスの座標系を、スクリーン座標にします。デフォルトでは、クライアント座標になります。
DS_CENTERデスクトップの作業領域の中央にダイアログボックスを配置します。作業領域は、タスクバーに覆われていない領域です。
DS_CENTERMOUSEダイアログボックスの中央にマウスポインタを配置します。
DS_CONTEXTHELPダイアログボックスのタイトルバーに[?]ボタンを追加します。ユーザーがこの[?]ボタンをクリックすると、マウスポインタに疑問符が付きます。その後、ユーザーがダイアログボックス内のコントロールをクリックすると、コントロールはWM_HELPメッセージを受け取ります。コントロールはダイアログの処理にそのメッセージを送ります。
DS_CONTROL他のダイアログボックスの子ウィンドウとして適切に機能する、プロパティシート内のページのようなダイアログボックスを作成します。
DS_FIXEDSYSSYSTEM_FONTの代わりに、SYSTEM_FIXED_FONTを使用します。
DS_LOCALEDIT16 ビットのアプリケーションで使用します。
DS_MODALFRAMEモーダルダイアログボックスフレームを持つダイアログボックスを作成します。
DS_NOFAILCREATEエラーが発生してもダイアログボックスを作成します。
DS_NOIDLEMSGダイアログボックスが表示されている間、WM_ENTERIDLEメッセージを抑制します。
DS_RECURSEコントロールに似たダイアログボックスを作成します。
DS_SETFONTダイアログボックステンプレートが、フォント名とポイントサイズを持つことを示します。対応するフォントは、ダイアログボックスでテキストを表示するために使われます。
DS_SETFOREGROUNDダイアログボックスをフォアグラウンドにします。このスタイルは、16ビット版のWindowsには適用できません。
DS_SYSMODALシステムモーダルダイアログボックスを作成します。このスタイルを指定すると、ダイアログボックスが最前面ウィンドウ(WS_EX_TOPMOST)になります。その他の点では、ダイアログボックス自身やシステム内の他のウィンドウの振る舞いに影響を与えません。

戻り値

関数が成功すると、作成されたウィンドウのハンドルが返ります。失敗すると、0 が返ります。

環境情報

インクルード ファイル: api_window.sbp 内で定義済み
DLLファイル: user32.dll


DestroyWindow関数ShowWindow関数RegisterClassEx関数