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

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

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

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

ページ移動

2-5-8. 左右の分割から上下の分割に変更の処理

 ここでは、フレームバーモジュールを使用する際に、左右の分割から上下の分割に変更する方法を説明します。

左右の分割から上下の分割に変更の処理

 FrameBar.c のテストプログラムでは、ウィンドウプロシージャの、WM_COMMAND メッセージで以下の実行をしています。
        case WM_COMMAND:        // メニューやアクセラレータのコマンド
        {
            switch (LOWORD(wParam))
            {
                case IDM_SPLIT:    // 上下または左右に分割
                {
                    RECT rc;

                    DestroyFrameBar(hFrame);
                    GetClientRect(hWnd,&rc);
                    if (fSplit == FBF_VLINE)
                    {
                        fSplit = FBF_HLINE;
                        if (rc.bottom < pfbs->width+FBN_WIDTH)
                            pfbs->width = FBN_DEFLEN;
                    }
                    else
                    {
                        fSplit = FBF_VLINE;
                        if (rc.right < pfbs->width+FBN_WIDTH)
                            pfbs->width = FBN_DEFLEN;
                    }
                    hFrame = CreateFrameBar(fSplit);
                    SendMessage(hWnd,WM_SIZE,0,
                                MAKELONG(rc.right,rc.bottom));
                    return 0;
                }
 左右の分割から上下の分割に変更(または逆)するのは、まず、DestroyFrameBar 関数で、現在のフレームバーのウィンドウを破棄します。そして適正な値を、FBSYS 構造体の width に設定します。そして、現在と逆のフレームバーを、CreateFrameBar 関数で作成します。これだけでは、正常な表示ができませんので、WM_SIZE メッセージは発生させて、3つのウィンドウ(hHello,hFrame,hEdit)を再表示します。

ページ移動