<Return[C]><Top>

CreateWindow

Declare Function Api_CreateWindow& Lib "user32" Alias "CreateWindowA" (ByVal lpClassName$, ByVal lpWindowName$, ByVal dwStyle&, ByVal x&, ByVal y&, ByVal nWidth&, ByVal nHeight&, ByVal hWndParent&, ByVal hMenu&, ByVal hInstance&, lpParam As Any)

Declare Function CreateWindow Lib "user32" Alias "CreateWindowA" (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 関数でサポートされているウィンドウスタイルに加えて拡張ウィンドウスタイルも使用する必要がある場合は、 CreateWindowEx 関数を使う。

パラメータ
lpClassName
    NULL で終わる文字列へのポインタかクラスアトムを指定する。クラスアトムを指定する場合は、 RegisterClass 関数または

    RegisterClassEx 関数の呼び出しにより作成したものを使用する。lpClassName パラメータの下位ワードにアトムを格納し、上位ワードに 0

    を格納する。
    lpClassName パラメータに文字列を指定する場合は、ウィンドウクラスの名前を指定する。クラス名には、RegisterClass 関数または

    RegisterClassEx 関数で登録した名前を指定できる。ただし、クラスを登録したモジュールとウィンドウを作成するモジュールが同一でなけれ

    ばならない。クラス名には、定義済みのシステムクラス名を指定することもできる。
lpWindowName
    ウィンドウ名が入った、NULL で終わる文字列へのポインタを指定する。
    ウィンドウスタイルでタイトルバーを指定した場合は、このパラメータに指定したウィンドウタイトルがタイトルバーに表示される。ボタン、チェック

    ボックス、スタティックコントロールなどのコントロールを作成する場合は、コントロールのテキストを指定する。SS_ICON スタイルを持つスタテ

    ィックコントロールを作成する場合は、アイコンの名前または識別子を指定する。識別子を指定する場合は、"#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 のウィンドウプロシージャが失敗した。