オーバーラップウィンドウ、ポップアップウィンドウ、子ウィンドウのいずれかを、拡張ウィンドウスタイル付きで作成します。拡張ウィンドウスタイルを指定する以外は、CreateWindow関数と同等です。
HWND CreateWindowExA( DWORD dwExStyle, // extended window style PCTSTR pszClassName, // window class PCTSTR pszWindowName, // window name DWORD dwStyle, // window style int x, // x-position int y, // y-position int nWidth, // width int nHeight, // height HWND hWndParent, // parent window HMENU hMenu, // menu handle or control ID HINSTANCE hInstance, // instance handle PVOID pParam // CREATESTRUCT structure );
USER32.DLL
ウィンドウの拡張スタイルを指定します。
以前のRegisterClass関数またはRegisterClassEx関数の呼び出しにより作成されたウィンドウクラスの名前を表す文字列へのポインタまたはクラスアトムを指定します。アトムを指定する場合には、このパラメータの下位ワードがアトムとなるようにし、上位ワードはゼロになるようにしなければいけません。文字列を指定する場合には、ウィンドウクラス名を指定します。ウィンドウクラスの名前は、RegisterClass関数またはRegisterClassEx関数で登録されたクラス名か、システムの定義済みコントロールのクラス名を指定することができます。クラス名の大文字・小文字は区別されません。
システムの定義済みコントロールのクラス名は、以下のものがあります。
Riched32.dllをロードしておく必要があります。
Riched20.dllをロードしておく必要があります。
コモンコントロールライブラリにより、次のコモンコントロールクラスが提供されます。これらを使用するには、InitCommonControls関数またはInitCommonControlsEx関数を呼び出して、使用するコントロールのクラスを登録しておく必要があります。
ウィンドウ名を表す文字列へのポインタを指定します。タイトルバーを持つウィンドウスタイルが指定されている場合には、この文字列がタイトルバーに表示されます。ボタン、チェックボックス、スタティックコントロールなどのコントロールを作成する場合には、この文字列がコントロールテキストになります。SS_ICONスタイルを持つスタティックコントロールを作成する場合、この文字列を使用してアイコン名またはIDを指定します。IDを指定する場合は、"#num"(numはIDを表す整数)の形式で指定します。
作成されるウィンドウスタイルを指定します。
定義済みコントロールには、特有のスタイルを持つものがあります。システム定義済みコントロールを作成する場合は、上記のスタイルの他にコントロール固有のスタイルを組み合わせて指定することができます。コモンコントロールを作成する場合は、上記のスタイルの他にコモンコントロール固有のスタイルを組み合わせて指定することができます。
作成するウィンドウの座標を指定します。オーバーラップウィンドウやポップアップウィンドウを作成するときはスクリーン座標で、子ウィンドウを作成するときはクライアント座標で指定します。
オーバーラップウィンドウを作成する際に、xパラメータに0x80000000 (CW_USEDEFAULT) を指定すると、デフォルトの位置にウィンドウを作成します。このとき、yパラメータは無視されます。その他のウィンドウを作成する際にCW_USEDEFAULTを指定すると0に設定されます。
作成するウィンドウのサイズを指定します。
オーバーラップウィンドウを作成する際に、nWidthパラメータに0x80000000 (CW_USEDEFAULT) を指定すると、デフォルトの幅と高さが使用されます。このとき、nHeightパラメータは無視されます。その他のウィンドウの場合は0に設定されます。
作成されるウィンドウの親ウィンドウのハンドルを指定します。子ウィンドウまたはポップアップウィンドウを作成するには、有効なウィンドウハンドルを指定しなければいけません。ポップアップウィンドウを作成する場合は、このパラメータを指定するかどうかは任意です。親ウィンドウを持たないウィンドウを作成する場合は0 (NULL) を指定します。
Windows 2000/XP: メッセージ専用ウィンドウを作成するには、-3 (HWND_MESSAGE) または既存のメッセージ専用ウィンドウのハンドルを指定します。
ウィンドウスタイルに応じて、メニューハンドルまたは子ウィンドウIDを指定します。
オーバーラップウィンドウやポップアップウィンドウを作成する場合は、ウィンドウで使用されるメニューのハンドルを指定します。クラスメニューを使用する場合は0 (NULL) を指定します。
子ウィンドウ(コントロール)を作成する場合は子ウィンドウID(コントロールID)を指定します。子ウィンドウIDは、子ウィンドウがその親ウィンドウにイベントを通知する際のウィンドウ識別値です。子ウィンドウIDはアプリケーションにより決定されます。同じ親ウィンドウを持つすべての子ウィンドウは、それぞれ固有のIDを持つ必要があります。
Windows 95/98/Me: ウィンドウに関連付けられるモジュールのインスタンスハンドルを指定します。
Windows NT/2000/XP: このパラメータは無視されます。
CREATESTRUCT構造体へのポインタを指定します。MDIクライアントウィンドウを作成する場合は、CLIENTCREATESTRUCT構造体へのポインタを指定します。不要な場合は0 (NULL) を指定します。
メッセージのlParamパラメータとして渡される、成功すると、作成されたウィンドウのハンドルが返ります。
失敗すると 0 (NULL) が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。
CreateWindowEx関数は、作成しようとしているウィンドウに , , メッセージを送信します。
子ウィンドウを作成した場合には、デフォルトの位置は最下層のZオーダーになります。トップレベルウィンドウを作成した場合には、デフォルトの位置は最上位のZオーダーになります。ただし、作成ウィンドウ自身が最上位スタイルを持たない限り、ほかの最上位ウィンドウよりも下におかれます。
Windows 95/98/Me: システムは最大16,364個のウィンドウハンドルをサポートします。
Windows NT/2000/XP: dwExStyleパラメータにWS_EX_NOACTIVATEを指定すると、システムによるフォアグラウンドアクティブ化がされないようになります。ユーザーがウィンドウをクリックした際にキューアクティブ化されないようにするには、 メッセージを処理する必要があります。ウィンドウをフォアグラウンド化またはアクティブ化するには、SetActiveWindow関数またはSetForegroundWindow関数を使用します。 メッセージにFALSEを返すことによってウィンドウのキューアクティブが失われないようにすることはできます。ただし、アクティブ化される時の戻り値は無視されます。
Windows 95 以降 / Windows NT 3.1 以降