アークピットのホームページに戻る

WinAPIトピックのトップページに戻る

APIトピックの各章に移動する

ダウンロードのページに移動する
ダウンロードができ
ない場合の対処法
 

ページ移動

2-5-5. フレームバーの初期化とウインドウの作成と破棄

 ここでは、フレームバーモジュールを使用する際の初期化の方法と、ウィンドウを作成する方法を説明します。

フレームバーの初期化とウインドウの作成と破棄

 FrameBar.c のテストプログラムでは、ウィンドウプロシージャの、WM_CREATE,WM_DESTROY メッセージで以下の実行をしています。
    static PFBSYS pfbs   = NULL;

    switch (uMsg)
    {
        case WM_CREATE:         // メインウィンドウの新規作成
        {
            HINSTANCE hInst;

            hInst = (HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
            pfbs = InitFrameBar(hInst,hWnd);
            hHello = CreateWindowEx(WS_EX_CLIENTEDGE,pHelloClass,
                                    NULL,
                                    WS_CHILD|WS_BORDER|WS_VISIBLE,
                                    0,0,0,0,
                                    hWnd,NULL,hInst,pfbs);
            hFrame = CreateFrameBar(fSplit);
            hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT",NULL,
                             WS_CHILD|WS_BORDER|WS_VISIBLE|WS_VSCROLL|
                             ES_AUTOVSCROLL|ES_MULTILINE|ES_NOHIDESEL,
                             0,0,0,0,
                             hWnd,(HMENU)1000,hInst,NULL);
            SetWindowText(hEdit,"This is Edit Control."
                                "\r\n\r\n入力できます。");
            return 0;
        }
        case WM_DESTROY:        // ウィンドウを破棄する
        {
            if (hHello) DeleteObject(hHello);
            if (hEdit)  DeleteObject(hEdit);
            DestroyFrameBar(hFrame);
            TermFrameBar();
            PostQuitMessage(0);
            return 0;
        }
 これらは、メインウィンドウの新規作成時と破棄時のメッセージです。フレームバーは、最初に、InitFrameBar 関数をコールしなければいけません。また終了時は、DestroyFrameBar 関数をコールします。これらはアプリケーションで1回だけ、起動時と終了前にコールします。InitFrameBar はウィンドウクラスを登録し、グローバルなシステム変数を設定し、使用する描画のオブジェクトを作成します。渡すパラメータは、インスタンスとフレームバーの親のウィンドウのハンドルです。これらは途中で変更できません。成功すれば、FBSYS 構造体のポインタを返します。この構造体のメンバをHelloウィンドウのプロシージャで使用しますので、次の、CreateWindowEx(,pHelloClass..)のlParamに渡します。TermFrameBar にはパラメータはありません。

 フレームバーの作成は、CreateFrameBar 関数です。縦線のフレームバーなら、FBF_VLINE を与え、横線のフレームバーなら、FBF_HLINE を与えます。成功すれば、フレームバーのウィンドウのハンドルを返します。この関数では、フレームバーのサイズはすべて0で作成します。この段階では大きさは決定しません。サイズは、WM_SIZE メッセージで設定します。

ページ移動