<Return[C]><Top>

CreateWindowEx

Declare Function Api_CreateWindowEx& Lib "user32" Alias "CreateWindowExA" (ByVal ExStyle&, ByVal ClassName$, ByVal WinName$, ByVal Style&, ByVal x&, ByVal y&, ByVal nWidth&, ByVal nHeight&, ByVal Parent&, ByVal Menu&, ByVal Instance&, ByVal Param&)

Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long

オーバーラップウィンドウ、ポップアップウィンドウ、子ウィンドウのいずれかを拡張スタイル付きで作成する。拡張スタイルが指定できること以外は CreateWindow 関数と同じである。

パラメータ
dwExStyle
    作成するウィンドウの拡張ウィンドウスタイルを指定する。次の値を組み合わせて指定できる。

    スタイル                                         

意味                                                                                                                   

    WS_EX_ACCEPTFILES

ドラッグアンドドロップでファイルを受け入れる。

    WS_EX_APPWINDOW

ウィンドウが表示されているときには、必ずトップレベルウィンドウがタスクバー上に置かれる。

    WS_EX_CLIENTEDGE

縁が沈んで見える境界線を持つ。

    WS_EX_CONTEXTHELP

ウィンドウのタイトルバーに[?]ボタンを追加する。ユーザーがこの[?]ボタンをクリックすると、マウ

スポインタに疑問符が付く。その後、ユーザーが子ウィンドウをクリックすると、その子ウィンドウに

WM_HELP メッセージが送られる。子ウィンドウは、親ウィンドウのプロシージャにそのメッセージを渡

さなければならない。

メッセージを受け取ったプロシージャは、HELP_WM_HELP コマンドを使って WinHelp 関数を呼び

出さなければならない。ヘルプアプリケーションは、通常、子ウィンドウに関するヘルプの入ったポップ

アップウィンドウを表示する。

WS_EX_CONTEXTHELP は WS_MAXIMIZEBOX スタイルや WS_MINIMIZEBOX スタイルとは

一緒に使用できない。

    WS_EX_CONTROLPARENT

ウィンドウが持つ子ウィンドウを、そのダイアログボックスナビゲーションに含める。

このスタイルを指定すると、ダイアログマネージャは、ナビゲーション操作を実行するとき([Tab]キ

ー、方向キー、キーボード操作などを処理する際)に、このウィンドウの子ウィンドウにまで再帰的に

移動する。

    WS_EX_DLGMODALFRAME

二重の境界線を持つウィンドウを作成する。dwStyle パラメータに WS_CAPTION スタイルを指定し

て、タイトルバーを持たせることもできる。

    WS_EX_LAYERED  

Windows 2000:レイヤーウィンドウ を作成する。

    WS_EX_LAYOUTRTL

Windows 2000:右端が水平方向の原点となるウィンドウを作成する。

左に行くにつれ、座標値が大きくなる。

    WS_EX_LEFT

一般的な左揃えのプロパティを持つウィンドウを作成する。このスタイルは既定。

    WS_EX_LEFTSCROLLBAR

垂直スクロールバーがクライアント領域の左側に置かれる。

ヘブライ語やアラビア語などの読みの方向をサポートしている言語をシェル言語としているシステムで有

効。他の言語では、このスタイルは無視される。

    WS_EX_LTRREADING

左から右への読み取り順序を持つプロパティを持ったウィンドウを作成する。このスタイルは既定。

    WS_EX_MDICHILD MDI

子ウィンドウを作成する。

    WS_EX_NOACTIVATE

Windows 2000:このスタイルで作成されたトップレベルウィンドウは、ユーザーがクリックしてもフォアグ

ラウンドウィンドウにならない。ユーザーがフォアグラウンドウィンドウを最小化したり閉じたりしたときに

も、システムがこのウィンドウをフォアグラウンドウィンドウにすることはない。

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

使う。

    WS_EX_NOINHERITLAYOUT

Windows 2000:このスタイルで作成されたウィンドウは、そのウィンドウレイアウトを子ウィンドウに渡さ

ない。

     WS_EX_NOPARENTNOTIFY

このスタイルで作成された子ウィンドウは、作成されたり破棄されたりしたときに親ウィンドウに

WM_PARENTNOTIFY メッセージを送らない。

    WS_EX_OVERLAPPEDWINDOW

WS_EX_CLIENTEDGE スタイルと WS_EX_WINDOWEDGE スタイルの組み合わせ。

    WS_EX_PALETTEWINDOW

WS_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

このスタイルで作成されたウィンドウは、その下にある兄弟ウィンドウ( 同じスレッドにより作成された

ウィンドウ)が描画されるまでは描画されない。下にある兄弟ウィンドウのビットが既に描画されている

ため、ウィ ンドウは透明に見える。

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

    WS_EX_WINDOWEDGE

盛り上がった縁の境界線を持つ。

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 座標の初期値となる。
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
    WM_CREATE メッセージで lParam パラメータに渡される CREATESTRUCT 構造体によりウィンドウに渡される値へのポインタを指定す

    る。マルチドキュメントインターフェイス(MDI)のクライアントウィンドウを作成する場合、CLIENTCREATESTRUCT 構造体へのポインタを

    指定しなければならない。
 

戻り値
    関数が成功すると、作成されたウィンドウのハンドルが返る。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。