CreateWindowEx

https://msdn.microsoft.com/ja-jp/library/cc448046.aspx https://msdn.microsoft.com/ja-jp/library/ms632638.aspx https://msdn.microsoft.com/ja-jp/library/ms534845.aspx https://msdn.microsoft.com/ja-jp/library/ms632600.aspx https://msdn.microsoft.com/ja-jp/library/ms632619.aspx https://msdn.microsoft.com/ja-jp/library/ms632603.aspx https://msdn.microsoft.com/ja-jp/library/ms632602.aspx https://msdn.microsoft.com/ja-jp/library/cc428944.aspx https://msdn.microsoft.com/ja-jp/library/bb776822.aspx https://msdn.microsoft.com/ja-jp/library/bb775943.aspx https://msdn.microsoft.com/ja-jp/library/bb775951.aspx https://msdn.microsoft.com/ja-jp/library/bb775792.aspx https://msdn.microsoft.com/ja-jp/library/bb775796.aspx https://msdn.microsoft.com/ja-jp/library/bb775458.aspx https://msdn.microsoft.com/ja-jp/library/bb775464.aspx https://msdn.microsoft.com/ja-jp/library/bb775146.aspx https://msdn.microsoft.com/ja-jp/library/bb775149.aspx https://msdn.microsoft.com/ja-jp/library/ms632591.aspx https://msdn.microsoft.com/ja-jp/library/bb787605.aspx https://msdn.microsoft.com/ja-jp/library/bb774367.aspx https://msdn.microsoft.com/ja-jp/library/bb787605.aspx https://msdn.microsoft.com/ja-jp/library/bb774367.aspx https://msdn.microsoft.com/ja-jp/library/bb787529.aspx https://msdn.microsoft.com/ja-jp/library/bb787533.aspx https://msdn.microsoft.com/ja-jp/library/bb760769.aspx https://msdn.microsoft.com/ja-jp/library/bb760773.aspx https://msdn.microsoft.com/ja-jp/library/ms632602.aspx https://msdn.microsoft.com/ja-jp/library/ms632603.aspx https://msdn.microsoft.com/ja-jp/library/ms632619.aspx https://msdn.microsoft.com/ja-jp/library/ms632634.aspx https://msdn.microsoft.com/ja-jp/library/ms632635.aspx https://msdn.microsoft.com/ja-jp/library/ms534901.aspx https://msdn.microsoft.com/ja-jp/library/ms632638.aspx

オーバーラップウィンドウ、ポップアップウィンドウ、子ウィンドウのいずれかを拡張スタイル付きで作成します。拡張スタイルが指定できること以外は CreateWindow 関数と同じです。ウィンドウの作成方法、および CreateWindowEx 関数のその他のパラメータの詳しい説明については、CreateWindow の説明を参照してください。

HWND CreateWindowEx(
  DWORD dwExStyle,      // 拡張ウィンドウスタイル
  LPCTSTR lpClassName,  // 登録されているクラス名
  LPCTSTR lpWindowName, // ウィンドウ名
  DWORD dwStyle,        // ウィンドウスタイル
  int x,                // ウィンドウの横方向の位置
  int y,                // ウィンドウの縦方向の位置
  int nWidth,           // ウィンドウの幅
  int nHeight,          // ウィンドウの高さ
  HWND hWndParent,      // 親ウィンドウまたはオーナーウィンドウのハンドル
  HMENU hMenu,          // メニューハンドルまたは子識別子
  HINSTANCE hInstance,  // アプリケーションインスタンスのハンドル
  LPVOID lpParam        // ウィンドウ作成データ
);

パラメータ

dwExStyle
作成するウィンドウの拡張ウィンドウスタイルを指定します。次の値を組み合わせて指定できます。
スタイル意味
WS_EX_ACCEPTFILESドラッグアンドドロップでファイルを受け入れます。
WS_EX_APPWINDOWウィンドウが表示されているときには、必ずトップレベルウィンドウがタスクバー上に置かれます。
WS_EX_CLIENTEDGE縁が沈んで見える境界線を持ちます。
WS_EX_CONTEXTHELPウィンドウのタイトルバーに[?]ボタンを追加します。ユーザーがこの[?]ボタンをクリックすると、マウスポインタに疑問符が付きます。その後、ユーザーが子ウィンドウをクリックすると、その子ウィンドウに WM_HELP メッセージが送られます。子ウィンドウは、親ウィンドウのプロシージャにそのメッセージを渡さなければなりません。メッセージを受け取ったプロシージャは、HELP_WM_HELP コマンドを使って 関数を呼び出さなければなりません。ヘルプアプリケーションは、通常、子ウィンドウに関するヘルプの入ったポップアップウィンドウを表示します。

WS_EX_CONTEXTHELP は WS_MAXIMIZEBOX スタイルや WS_MINIMIZEBOX スタイルとは一緒に使用できません。

WS_EX_CONTROLPARENTウィンドウが持つ子ウィンドウを、そのダイアログボックスナビゲーションに含めます。このスタイルを指定すると、ダイアログマネージャは、ナビゲーション操作を実行するとき([Tab]キー、方向キー、キーボード操作などを処理する際)に、このウィンドウの子ウィンドウにまで再帰的に移動します。
WS_EX_DLGMODALFRAME二重の境界線を持つウィンドウを作成します。dwStyle パラメータに WS_CAPTION スタイルを指定して、タイトルバーを持たせることもできます。
WS_EX_LAYEREDWindows 2000: を作成します。
WS_EX_LAYOUTRTLWindows 2000:右端が水平方向の原点となるウィンドウを作成します。左に行くにつれ、座標値が大きくなります。
WS_EX_LEFT一般的な左揃えのプロパティを持つウィンドウを作成します。このスタイルは、既定です。
WS_EX_LEFTSCROLLBAR垂直スクロールバーがクライアント領域の左側に置かれます。ヘブライ語やアラビア語などの読みの方向をサポートしている言語をシェル言語としているシステムで有効です。他の言語では、このスタイルは無視されます。
WS_EX_LTRREADING左から右への読み取り順序を持つプロパティを持ったウィンドウを作成します。このスタイルは、既定です。
WS_EX_MDICHILDMDI 子ウィンドウを作成します。
WS_EX_NOACTIVATEWindows 2000:このスタイルで作成されたトップレベルウィンドウは、ユーザーがクリックしてもフォアグラウンドウィンドウになりません。ユーザーがフォアグラウンドウィンドウを最小化したり閉じたりしたときにも、システムがこのウィンドウをフォアグラウンドウィンドウにすることはありません。

このウィンドウをアクティブにするには、SetActiveWindow 関数または SetForegroundWindow 関数を使います。

既定では、このウィンドウはタスクバーには表示されません。ウィンドウがタスクバーに表示されるようにするには、WS_EX_APPWINDOW スタイルを指定します。

WS_EX_NOINHERITLAYOUTWindows 2000:このスタイルで作成されたウィンドウは、そのウィンドウレイアウトを子ウィンドウに渡しません。
WS_EX_NOPARENTNOTIFYこのスタイルで作成された子ウィンドウは、作成されたり破棄されたりしたときに親ウィンドウに メッセージを送りません。
WS_EX_OVERLAPPEDWINDOWWS_EX_CLIENTEDGE スタイルと WS_EX_WINDOWEDGE スタイルの組み合わせです。
WS_EX_PALETTEWINDOWWS_EX_WINDOWEDGE スタイル、WS_EX_TOOLWINDOW スタイル、WS_EX_TOPMOST スタイルの組み合わせです。
WS_EX_RIGHT一般的な右揃えのプロパティを持つウィンドウを作成します。このスタイルは、ウィンドウクラスに依存します。ヘブライ語やアラビア語などの読みの方向をサポートしている言語をシェル言語としているシステムで有効です。他の言語では、このスタイルは無視されます。
WS_EX_RIGHTSCROLLBAR垂直スクロールバーがクライアント領域の右側に置かれます。このスタイルは、既定です。
WS_EX_RTLREADING右から左への読み取り順序のプロパティを使ってテキストを表示するウィンドウを作成します。ヘブライ語やアラビア語などの読みの方向をサポートしている言語をシェル言語としているシステムで有効です。他の言語では、このスタイルは無視されます。
WS_EX_STATICEDGEユーザー入力を受け付けない項目用の立体的に見える境界スタイルを持つウィンドウを作成します。
WS_EX_TOOLWINDOWツールウィンドウを作成します。これは、フローティングツールバー用のウィンドウです。ツールウィンドウは、通常のタイトルバーより小さいタイトルバーを持ち、ウィンドウタイトルも通常より小さいフォントで表示されます。タスクバーや、[Alt]+[Tab]キーを押したとき現れるダイアログには表示されません。ツールウィンドウがシステムメニューを持つ場合でも、タイトルバーにアイコンは表示されません。システムメニューを表示するには、右クリックするか、または[Alt]+[Space]キーを押します。
WS_EX_TOPMOST最前面ウィンドウを作成します。このウィンドウは、アクティブでないときにも他のウィンドウの前面に表示されます。このスタイルは、SetWindowPos 関数を使って有効にしたり無効にしたりできます。
WS_EX_TRANSPARENTこのスタイルで作成されたウィンドウは、その下にある兄弟ウィンドウ( 同じスレッドにより作成されたウィンドウ)が描画されるまでは描画されません。下にある兄弟ウィンドウのビットが既に描画されているため、ウィンドウは透明に見えます。

この制限なしに透明な効果を得るには、 関数を使います。

WS_EX_WINDOWEDGE盛り上がった縁の境界線を持ちます。

スタティックコントロールに WS_EX_RIGHT スタイルを持たせると、SS_RIGHT を指定したのと同じ効果が得られます。エディットコントロールに WS_EX_RIGHT スタイルを持たせると、ES_RIGHT スタイルを指定したのと同じ効果が得られます。ボタンコントロールに WS_EX_RIGHT スタイルを持たせると、BS_RIGHT スタイルと BS_RIGHTBUTTON スタイルを指定したのと同じ効果が得られます。

lpClassName
NULL で終わる文字列へのポインタかクラスアトムを指定します。クラスアトムを指定する場合は、RegisterClass 関数または RegisterClassEx 関数の呼び出しにより作成したものを使用します。lpClassName パラメータの下位ワードにアトムを格納し、上位ワードに 0 を格納します。

lpClassName パラメータに文字列を指定する場合は、ウィンドウクラスの名前を指定します。クラス名には、RegisterClass 関数または RegisterClassEx 関数で登録した名前を指定できます。ただし、クラスを登録したモジュールとウィンドウを作成するモジュールが同一でなければなりません。クラス名には、定義済みの 名を指定することもできます。

lpWindowName
ウィンドウ名が入った、NULL で終わる文字列へのポインタを指定します。

ウィンドウスタイルでタイトルバーを指定した場合は、lpWindowName パラメータに指定したウィンドウタイトルがタイトルバーに表示されます。ボタン、チェックボックス、スタティックコントロールなどのコントロールを作成する場合は、lpWindowName パラメータにコントロールのテキストを指定します。SS_ICON スタイルを持つスタティックコントロールを作成する場合は、lpWindowName パラメータにアイコンの名前または識別子を指定します。識別子を指定する場合は、"#num" という構文を使ってください。

dwStyle
作成するウィンドウのスタイルを指定します。任意の組み合わせの に加えて、解説に示すコントロールスタイルも指定できます。
x
ウィンドウの横方向の初期位置を指定します。オーバーラップウィンドウまたはポップアップウィンドウを作成する場合は、ウィンドウの左上端の x 座標をスクリーン座標で指定します。子ウィンドウを作成する場合は、ウィンドウ左上端の x 座標を、親ウィンドウのクライアント領域の左上端に対する相対座標で指定します。

x パラメータに CW_USEDEFAULT を指定すると、ウィンドウの左上端には既定位置が使用され、y パラメータは無視されます。CW_USEDEFAULT を指定できるのは、オーバーラップウィンドウを作成する場合だけです。ポップアップウィンドウおよび子ウィンドウに CW_USEDEFAULT を指定すると、x パラメータと y パラメータは 0 に設定されます。

y
ウィンドウの縦方向の初期位置を指定します。オーバーラップウィンドウまたはポップアップウィンドウを作成する場合は、ウィンドウの左上端の y 座標をスクリーン座標で指定します。子ウィンドウを作成する場合は、ウィンドウ左上端の y 座標を、親ウィンドウのクライアント領域の左上端に対する相対座標で指定します。リストボックスの場合、y パラメータは、親ウィンドウのクライアント領域の左上端に対するリストボックスのクライアント領域の左上端の相対 y 座標の初期値となります。

スタイルの WS_VISIBLE をセットしてオーバーラップウィンドウを作成した場合、x パラメータに CW_USEDEFAULT を指定すると、y パラメータは無視されます。

nWidth
ウィンドウの幅をデバイス単位で指定します。オーバーラップウィンドウの場合は、スクリーン座標でのウィンドウの幅か CW_USEDEFAULT を指定します。CW_USEDEFAULT を指定すると、既定の幅と高さが使用されます。既定の幅は、初期 x 座標から画面の右端までの距離、既定の高さは、初期 y 座標からアイコン領域の上端までの距離です。CW_USEDEFAULT を指定できるのは、オーバーラップウィンドウを作成する場合だけです。ポップアップウィンドウおよび子ウィンドウに CW_USEDEFAULT を指定すると、nWidth パラメータと nHeight パラメータは 0 に設定されます。
nHeight
ウィンドウの高さをデバイス単位で指定します。オーバーラップウィンドウの場合は、スクリーン座標でのウィンドウの高さを指定します。nWidth パラメータに CW_USEDEFAULT を指定した場合は、nHeight パラメータは無視されます。
hWndParent
作成するウィンドウの親ウィンドウまたはオーナーウィンドウのハンドルを指定します。子ウィンドウを作成する場合は、必ず有効なウィンドウハンドルを指定してください。ポップアップウィンドウを作成する場合は、このパラメータは省略可能です。

Windows 2000: を作成する場合は、HWND_MESSAGE か、または既存のメッセージ専用ウィンドウのハンドルを指定します。

hMenu
ウィンドウスタイルに応じてメニューまたは子ウィンドウ ID を指定します。オーバーラップウィンドウまたはポップアップウィンドウの場合は、ウィンドウと一緒に使用されるメニューのハンドルを指定します。クラスメニューを使う場合は、NULL でかまいません。子ウィンドウの場合は、子ウィンドウ ID を指定します。子ウィンドウ ID とは、ダイアログボックスコントロールがその親ウィンドウにイベントを通知するときに使用する整数値です。子ウィンドウ ID はアプリケーションで決定しますが、同じ親ウィンドウを持つ子ウィンドウの間では重複していてはなりません。
hInstance
Windows 95/98:ウィンドウに関連付けられたモジュールのインスタンスハンドルを指定します。

Windows NT/2000:このパラメータは無視されます。

lpParam
メッセージで lParam パラメータに渡される 構造体によりウィンドウに渡される値へのポインタを指定します。マルチドキュメントインターフェイス(MDI)のクライアントウィンドウを作成する場合、 構造体へのポインタを指定しなければなりません。

戻り値

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

関数が失敗すると、NULL が返ります。拡張エラー情報を取得するには、 関数を使います。

この関数の失敗で考えられる一般的な原因は次のとおりです。

•パラメータに無効な値が指定された。

•システムクラスを登録したモジュールが別のモジュールである。

•WH_CBT フックがインストールされており、失敗コードを返した。

•WM_CREATE または WM_NCCREATE のウィンドウプロシージャが失敗した。

解説

この関数は、作成したウィンドウに WM_NCCREATE メッセージ、WM_NCCALCSIZE メッセージ、および WM_CREATE メッセージを送ります。

作成したウィンドウのボタンをタスクバーに表示するかどうかを指定する方法については、「」を参照してください。

lpClassName パラメータには、次に示す定義済みのシステムクラスを指定できます。dwStyle パラメータには、対応するコントロールスタイルしか指定できないので注意してください。

クラス意味
BUTTONユーザーがクリックしてオンにしたりオフにしたりできるボタンを表す小さな長方形の子ウィンドウです。ボタンコントロールは単独でもグループでも使用でき、ラベルを付けることもテキストなしで表示することもできます。通常、ユーザーがボタンをクリックすると、その外観が変化します。詳細については、「」を参照してください。

dwStyle パラメータに指定できるボタンスタイルの表については、「」を参照してください。

COMBOBOXリストボックスと選択フィールドから成る、エディットコントロールに似たコントロールです。このスタイルを使う場合、リストボックスは、常に表示するかまたはドロップダウン表示することになります。リストボックスが可視状態のときに、ユーザーが選択フィールドに文字を入力すると、リストボックス内の先頭が入力した文字と一致する最初の項目が強調表示されます。逆に、ユーザーがリストボックス内の項目を選択すると、選択したテキストが選択フィールドに表示されます。詳細については、「」を参照してください。

dwStyle パラメータに指定できるコンボボックススタイルの表については、「」を参照してください。

EDITユーザーがキーボードからテキストを入力できる長方形の子ウィンドウです。ユーザーは、コントロールをクリックするか、または[Tab]キーを使ってコントロールを選択することにより、そのコントロールにキーボードフォーカスを与えることができます。エディットコントロール上でキャレットが点滅表示しているときには、テキストを入力できます。文字を削除するには[BackSpace]キーなどを使います。キャレットの移動、置換する文字の選択などには、マウスを使用できます。詳細については、「」を参照してください。

dwStyle パラメータに指定できるエディットコントロールスタイルの表については、「」を参照してください。

LISTBOX文字列のリスト( 一覧)です。ユーザーに選択肢( ファイル名など)の一覧を提示する場合に使用します。ユーザーは、クリックにより文字列を選択できます。選択された文字列は強調表示されます。このとき、親ウィンドウに通知メッセージが送られます。詳細については、「」を参照してください。

dwStyle パラメータに指定できるリストボックスコントロールスタイルの表については、「」を参照してください。

MDICLIENTMDI クライアントウィンドウです。このウィンドウは、MDI アプリケーションの子ウィンドウを制御するメッセージを受け取ります。推奨されるスタイルビットは、WS_CLIPCHILDREN と WS_CHILD です。スクロールバーを付けるときは、WS_HSCROLL と WS_VSCROLL を使います。詳細については、「」を参照してください。
RichEditVersion 1.0 のリッチエディットコントロールです。このウィンドウでは、文字書式および段落書式を持つテキストを表示し、編集できます。埋め込みの COM オブジェクトも入れることができます。詳細については、「」を参照してください。

dwStyle パラメータに指定できるリッチエディットコントロールスタイルの表については、「」を参照してください。

RICHEDIT_CLASSVersion 2.0 のリッチエディットコントロールです。このコントロールでは、文字書式および段落書式を持つテキストを表示し、編集できます。埋め込みの COM オブジェクトも入れることができます。詳細については、「」を参照してください。

dwStyle パラメータに指定できるリッチエディットコントロールスタイルの表については、「」を参照してください。

SCROLLBARつまみを持ち、両端に矢印ボタンがある長方形です。ユーザーがコントロールをクリックするたびに、親ウィンドウに通知メッセージが送られます。つまみの位置の更新は、必要に応じて親ウィンドウが行います。詳細については、「」を参照してください。

dwStyle パラメータに指定できるスクロールバーコントロールスタイルの表については、「」を参照してください。

STATIC単純なテキストフィールドやボックスとして使ったり、他のコントロールへのラベル付け、複数のコントロールのグループ化や分離などに使える長方形です。スタティックコントロールは入出力を行いません。詳細については、「」を参照してください。

dwStyle パラメータに指定できるスタティックコントロールスタイルの表については、「」を参照してください。


Windows 95:最大 16,364 個のウィンドウハンドルがサポートされています。

Windows 2000: dwExStyle に WS_EX_NOACTIVATE を指定すると、システムによるフォアグラウンドウィンドウのアクティブ化が行われなくなります。ユーザーがウィンドウをクリックしたときのキューのアクティブ化を無効にするには、WM_MOUSEACTIVATE メッセージを適切に処理しなければなりません。ウィンドウをプログラミングによりフォアグラウンドにしたりアクティブ化するには、SetForegroundWindow 関数や SetActiveWindow 関数を使います。WM_NCACTIVATE に 0(FALSE)を返すと、ウィンドウがキューのアクティブ化を失うのを防ぐことができます。ただし、アクティブ化時には、戻り値は無視されます。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

, , CreateWindow, EnableWindow, RegisterClass, RegisterClassEx, SetActiveWindow, SetForegroundWindow, SetWindowLong, SetWindowPos, ShowWindow, , , , ,

表示: