【问题标题】:MFC: disable New File and Save File features in SDI applicationMFC:禁用 SDI 应用程序中的新建文件和保存文件功能
【发布时间】:2011-08-11 00:55:28
【问题描述】:

在代码中使用命令以编程方式禁用应用程序中这两个功能的最简单方法是什么?提前致谢。

【问题讨论】:

    标签: file visual-c++ mfc


    【解决方案1】:

    您可以处理更新 UI 消息:

    ON_UPDATE_COMMAND_UI(ID_FILE_NEW, OnUpdateFileNew)
    ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, OnUpdateFileSave)
    
    ...
    
    void CMainFrame::OnUpdateFileNew(CCmdUI *pCmdUI)
    {
        pCmdUI->Enable( FALSE );
    }
    
    void CMainFrame::OnUpdateFileSave(CCmdUI *pCmdUI)
    {
        pCmdUI->Enable( FALSE );
    }
    

    【讨论】:

    • 好的,修正了那个错字(应该在从现有项目复制后正确阅读代码!)
    【解决方案2】:

    用你自己的函数覆盖CWinApp::OnFileNew,如下所示。

    BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
        ON_COMMAND(ID_APP_ABOUT, &CMyApp::OnAppAbout)
        // Standard file based document commands
        **//ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)**
        ON_COMMAND(ID_FILE_NEW, &CMyApp::OnFileNew)
        ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
        // Standard print setup command
        ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
    END_MESSAGE_MAP()
    
    
    void CMyApp::OnFileNew()
    {
             //Create a static member variable to hold the state. For the first time create a docment. From next time avoid calling CWinApp::OnFileNew();
        if( m_bDocCreated == FALSE )
        {
            CString strMsg;
            strMsg.Format( L"Create New DOC" );
            AfxMessageBox( strMsg );
    
            CWinApp::OnFileNew();
            m_bDocCreated = TRUE;
        }
        else
        {
            CFrameWnd* pFrame = (CFrameWnd*)AfxGetMainWnd();
            CMyDoc* pDoc = (CMyDoc*)pFrame->GetActiveDocument();
            CString strMsg;
            strMsg.Format( L"Doc ID = %ld",pDoc->m_lIndex );
            AfxMessageBox( strMsg );
    
        }
    
    
    }
    

    【讨论】:

      【解决方案3】:

      使用适当的菜单项调用CMenu::EnableMenuItem,并将MF_DISABLED 作为第二个参数。这是documentation

      【讨论】:

        猜你喜欢
        • 2020-08-27
        • 2014-05-01
        • 2011-02-09
        • 1970-01-01
        • 2014-10-28
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 2017-05-19
        相关资源
        最近更新 更多