CreateWindowExA 関数 (winuser.h)
拡張ウィンドウ スタイルを使用して、重なるウィンドウ、ポップアップ ウィンドウ、または子ウィンドウを作成します。それ以外の場合、この関数は CreateWindow 関数と同じです。 ウィンドウの作成の詳細と、
構文
HWND CreateWindowExA(
[in] DWORD dwExStyle,
[in, optional] LPCSTR lpClassName,
[in, optional] LPCSTR lpWindowName,
[in] DWORD dwStyle,
[in] int X,
[in] int Y,
[in] int nWidth,
[in] int nHeight,
[in, optional] HWND hWndParent,
[in, optional] HMENU hMenu,
[in, optional] HINSTANCE hInstance,
[in, optional] LPVOID lpParam
);
パラメーター
[in] dwExStyle
型: DWORD
作成されるウィンドウの拡張ウィンドウ スタイル。 使用可能な値の一覧については、「拡張ウィンドウ スタイルの
[in, optional] lpClassName
型: LPCTSTR
null-terminated 文字列またはクラスアトム。
null-terminated 文字列の場合は、ウィンドウ クラス名を指定します。 クラスを登録するモジュールがウィンドウを作成するモジュールでもある場合、クラス名には、RegisterClass または RegisterClassEx 関数に登録されている任意の名前を指定できます。 クラス名には、定義済みの システム クラス 名を指定することもできます。
RegisterClass または RegisterClassExを
[in, optional] lpWindowName
型: LPCTSTR
ウィンドウ名。 ウィンドウ スタイルでタイトル バーが指定されている場合、lpWindowName
[in] dwStyle
型: DWORD
作成するウィンドウのスタイル。 このパラメーターには、
[in] X
型: int
ウィンドウの最初の水平位置。 重なったウィンドウまたはポップアップ ウィンドウの場合、x パラメーターは、ウィンドウの左上隅の最初の x 座標 (画面座標) です。 子ウィンドウの場合、x は、親ウィンドウのクライアント領域の左上隅を基準としたウィンドウの左上隅の x 座標です。 x が CW_USEDEFAULTに設定されている場合、システムはウィンドウの左上隅の既定の位置を選択し、y パラメーターを無視します。 CW_USEDEFAULT は、重複するウィンドウに対してのみ有効です。ポップアップ ウィンドウまたは子ウィンドウに指定されている場合、x パラメーターと y パラメーターは 0 に設定されます。
[in] Y
型: int
ウィンドウの最初の垂直方向の位置。 重なったウィンドウまたはポップアップ ウィンドウの場合、y パラメーターは、ウィンドウの左上隅の初期 y 座標 (画面座標) です。 子ウィンドウの場合、y は、親ウィンドウのクライアント領域の左上隅を基準とした子ウィンドウの左上隅の最初の y 座標です。 リスト ボックスの場合 y は、親ウィンドウのクライアント領域の左上隅を基準とした、リスト ボックスのクライアント領域の左上隅の最初の y 座標です。
WS_VISIBLE スタイル ビット が設定された重なり合ったウィンドウが作成され、x パラメーターが CW_USEDEFAULTに設定されている場合、y パラメーターによってウィンドウの表示方法が決まります。 y パラメーターが CW_USEDEFAULTされている場合、ウィンドウ マネージャーは、ウィンドウの作成後に SW_SHOW フラグ ShowWindow を呼び出します。 y パラメーターが他の値である場合、ウィンドウ マネージャーはその値を nCmdShow パラメーターとして ShowWindow を呼び出します。
[in] nWidth
型: int
ウィンドウの幅 (デバイス単位)。 重なり合うウィンドウの場合、nWidth はウィンドウの幅、画面座標、または CW_USEDEFAULTです。 nWidth
[in] nHeight
型: int
ウィンドウの高さ (デバイス単位)。 重なり合うウィンドウの場合、nHeight はウィンドウの高さ (画面座標) です。
[in, optional] hWndParent
型: HWND
作成されるウィンドウの親ウィンドウまたは所有者ウィンドウへのハンドル。 子ウィンドウまたは所有ウィンドウを作成するには、有効なウィンドウ ハンドルを指定します。 このパラメーターは、ポップアップ ウィンドウでは省略可能です。
メッセージのみのウィンドウを作成するには、既存のメッセージ専用ウィンドウに HWND_MESSAGE またはハンドルを指定します。
[in, optional] hMenu
型: HMENU
メニューのハンドル。または、ウィンドウのスタイルに応じて、子ウィンドウ識別子を指定します。 重なったウィンドウまたはポップアップ ウィンドウの場合、
[in, optional] hInstance
型: HINSTANCE
ウィンドウに関連付けるモジュールのインスタンスへのハンドル。
[in, optional] lpParam
型: LPVOID
WM_CREATE メッセージの lParam パラメーターが指す CREATESTRUCT 構造体 (lpCreateParams メンバー) を介してウィンドウに渡される値へのポインター。 このメッセージは、戻る前に、この関数によって作成されたウィンドウに送信されます。
アプリケーション
戻り値
型: HWND
関数が成功した場合、戻り値は新しいウィンドウへのハンドルです。
関数が失敗した場合、戻り値は NULL
この関数は、通常、次のいずれかの理由で失敗します。
- 無効なパラメーター値
- システム クラスが別のモジュールによって登録された
- WH_CBT フックがインストールされ、エラー コードが返されます
- ダイアログ テンプレートのいずれかのコントロールが登録されていない場合、またはウィンドウ ウィンドウ プロシージャが WM_CREATE または WM_NCCREATE
備考
CreateWindowEx 関数は、WM_NCCREATE、WM_NCCALCSIZE、および WM_CREATE メッセージを作成中のウィンドウに送信します。
作成されたウィンドウが子ウィンドウの場合、既定の位置は Z オーダーの一番下にあります。 作成されたウィンドウが最上位ウィンドウの場合、既定の位置は Z オーダーの一番上にあります (ただし、作成されたウィンドウ自体が最上位でない限り、最上位のすべてのウィンドウの下)。
タスク バーに作成されたウィンドウのボタンを表示するかどうかを制御する方法については、「タスク バー ボタンの管理 を参照してください。
ウィンドウを削除する方法については、DestroyWindow 関数
lpClassName パラメーターには、次の定義済みコントロール クラスを指定できます。 dwStyle パラメーターで使用できる対応するコントロール スタイルに注意してください。
クラス | 意味 |
---|---|
ボタンの |
ユーザーがクリックしてオンまたはオフにできるボタンを表す小さな四角形の子ウィンドウを指定します。 ボタン コントロールは単独でもグループでも使用でき、ラベル付けすることも、テキストなしで表示することもできます。 ボタン コントロールは、通常、ユーザーがクリックしたときに外観を変更します。 詳細については、「ボタンの」を参照してください。
dwStyle パラメーターで指定できるボタン スタイルの表については、「Button Styles」を参照してください。 |
COMBOBOX を |
リスト ボックスと編集コントロールと同様の選択フィールドで構成されるコントロールを指定します。 このスタイルを使用する場合、アプリケーションは常にリスト ボックスを表示するか、ドロップダウン リスト ボックスを有効にする必要があります。 リスト ボックスが表示されている場合、選択フィールドに文字を入力すると、入力した文字と一致する最初のリスト ボックス エントリが強調表示されます。 逆に、リスト ボックスで項目を選択すると、選択したテキストが選択フィールドに表示されます。 詳細については、「コンボ ボックス |
編集 |
ユーザーがキーボードからテキストを入力できる四角形の子ウィンドウを指定します。 ユーザーがコントロールを選択し、そのコントロールをクリックするか Tab キーを押して移動することで、キーボード フォーカスを与えます。 ユーザーは、編集コントロールに点滅するキャレットが表示されたときにテキストを入力できます。マウスを使用してカーソルを移動したり、置換する文字を選択したり、文字を挿入するためにカーソルを配置したりします。または、キーを使用して文字を削除します。 詳細については、「コントロールの編集」を参照してください。
dwStyle パラメーターで指定できる編集コントロール スタイルの表については、「コントロール スタイルの編集」を参照してください。 |
LISTBOX の |
文字列の一覧を指定します。 ユーザーが選択できる名前 (ファイル名など) の一覧をアプリケーションが表示する必要がある場合は常に、このコントロールを指定します。 ユーザーは、文字列をクリックして選択できます。 選択した文字列が強調表示され、通知メッセージが親ウィンドウに渡されます。 詳細については、「リスト ボックスを |
MDICLIENT の |
MDI クライアント ウィンドウを指定します。 このウィンドウは、MDI アプリケーションの子ウィンドウを制御するメッセージを受信します。 推奨されるスタイル ビットは、WS_CLIPCHILDREN と WS_CHILDです。
WS_HSCROLL と WS_VSCROLL のスタイルを指定して、MDI 子ウィンドウを表示にスクロールできるようにする MDI クライアント ウィンドウを作成します。 詳細については、「複数のドキュメント インターフェイスの |
RichEdit |
Microsoft Rich Edit 1.0 コントロールを指定します。 このウィンドウでは、ユーザーが文字と段落の書式設定を使用してテキストを表示および編集でき、埋め込みコンポーネント オブジェクト モデル (COM) オブジェクトを含めることができます。 詳細については、「リッチ エディット コントロールの dwStyle パラメーターで指定できるリッチエディット コントロール スタイルの表については、「リッチ エディット コントロール スタイル」を参照してください。 |
RICHEDIT_CLASS |
Microsoft Rich Edit 2.0 コントロールを指定します。 このコントロールを使用すると、ユーザーは文字と段落の書式設定を使用してテキストを表示および編集でき、埋め込み COM オブジェクトを含めることができます。 詳細については、「リッチ エディット コントロールの dwStyle パラメーターで指定できるリッチエディット コントロール スタイルの表については、「リッチ エディット コントロール スタイル」を参照してください。 |
スクロール バー を |
スクロール ボックスを含み、両端に方向矢印がある四角形を指定します。 スクロール バーは、ユーザーがコントロールをクリックするたびに、親ウィンドウに通知メッセージを送信します。 必要に応じて、親ウィンドウがスクロール ボックスの位置を更新します。 詳細については、「スクロール バー |
静的 の |
他のコントロールのラベル付け、ボックス分割、または分離に使用する単純なテキスト フィールド、ボックス、または四角形を指定します。 静的コントロールは入力を受け取り、出力を提供しません。 詳細については、「静的コントロールの」を参照してください。
|
dwExStyle の
WS_EX_COMPOSITED 設定すると、ウィンドウのすべての子孫は、ダブルバッファリングを使用して下から上への描画順序を取得します。 下から上への描画順序では、降順のウィンドウに半透明 (アルファ) 効果と透明度 (カラー キー) 効果を適用できますが、降順ウィンドウに WS_EX_TRANSPARENT ビットも設定されている場合に限ります。 ダブルバッファリングにより、ウィンドウとその子孫をちらつきなしで塗りつぶすことができます。
例
次のサンプル コードは、CreateWindowExAの使用方法を示しています。
BOOL Create(
PCWSTR lpWindowName,
DWORD dwStyle,
DWORD dwExStyle = 0,
int x = CW_USEDEFAULT,
int y = CW_USEDEFAULT,
int nWidth = CW_USEDEFAULT,
int nHeight = CW_USEDEFAULT,
HWND hWndParent = 0,
HMENU hMenu = 0
)
{
WNDCLASS wc = {0};
wc.lpfnWndProc = DERIVED_TYPE::WindowProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = ClassName();
RegisterClass(&wc);
m_hwnd = CreateWindowEx(
dwExStyle, ClassName(), lpWindowName, dwStyle, x, y,
nWidth, nHeight, hWndParent, hMenu, GetModuleHandle(NULL), this
);
return (m_hwnd ? TRUE : FALSE);
}
手記
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CreateWindowEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
API セットの | ext-ms-win-ntuser-window-l1-1-0 (Windows 8 で導入) |
関連項目
複数のドキュメント インターフェイスの について
CREATESTRUCT の
概念
CreateWindow の
DestroyWindow の
EnableWindow の
その他のリソース を
リファレンス
RegisterClass の
RegisterClassEx の
SetActiveWindow の
SetForegroundWindow の
SetWindowLong の
SetWindowPos の
ShowWindow の
Windows の