私はMFCが初めてです。ウィザードを使用して SDI アプリケーションを作成し、生成されたコードを変更して、各ビュー、ツールバー、またはメニューのレイアウトを制御しようとしました。
...
m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)
...
DockPane(&m_wndToolBar); // m_wndToolBar is a tool bar
...
DockPane(&m_wndFileView);
m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);
DockPane(&m_wndOutput);
// w_wndFileView, m_wndClassView, m_wndOutput are some views.
...
しかし、それはうまくいかないようです: ウィンドウは常に、ユーザーが最後に操作したことを覚えているかのように動作します。たとえば、コードの最後の 3 行は、次のような 3 つのビューを作成します。
コードを実行して閉じ、次のように変更しました。
DockPane(&m_wndFileView);
DockPane(&m_wndOutput);
m_wndClassView.AttachToTabWnd(&m_wndOutput, DM_SHOW, TRUE, &pTabbedBar);
次のように表示されるはずですが、失敗したと思います (このスクリーンショットは実行結果ではありません。手動でレイアウトを変更しました)。
閉じたときに前回のレイアウトを保持します(写真1のように)。さらに、ユーザーが手動でレイアウトを変更したことを記憶することができます。なぜ?誰がそうしろと言った?