Last Updated 2004/08/03
Programming Tips Visual C++ MFC CView  索 引 
FormView で普通のダイアログデザイン
2004/08/03

ドキュメントビューを使用する為にダイアログベースではなく CFormView にて作成した場合,見た目は SDI となる.
これをダイアログベースで作った時の様にするには以下の様にする.
それなりに見える.

// サイズ変更を禁止 / 最大化ボタンを削除
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, 
                           CWnd* pParendWnd, CCreateContext* pContext) {

    return CFrameWnd::LoadFrame(nIDResource,
                                dwDefaultStyle & ~(WS_THICKFRAME | WS_MAXIMIZEBOX),
                                pParentWnd,
                                pContext);
}


// クライアント境界フラット
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {
    if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE;
    cs.dwExStyle = WS_EX_STATICEDGE;
    return TRUE;
}  


// システムメニューから"最大化"と"サイズ"を削除
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {
    int t = CFrameWnd::OnCreate(lpCreateStruct);
    CMenu* menu = GetSystemMenu(FALSE);
    menu->EnableMenuItem(SC_RESTORE, MF_BYCOMMAND | MF_ENABLED);
    menu->RemoveMenu(SC_MAXIMIZE, MF_BYCOMMAND);
    menu->RemoveMenu(SC_SIZE, MF_BYCOMMAND);
}


参照
VB のようなフォーム
前後のTips
FormView で普通のダイアログデザイン

DSS ProgrammingTipsCGI Ver2.01