2 Stimmen

MFC: Deaktivieren der Funktionen Neue Datei und Datei speichern in der SDI-Anwendung

Wie lassen sich diese beiden Funktionen in einer Anwendung am einfachsten durch Befehle im Code programmatisch deaktivieren? Vielen Dank im Voraus.

4voto

Alan Punkte 13182

Sie können die UI-Meldung zur Aktualisierung bearbeiten:

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 );
}

1voto

Mahadev Punkte 11

Überschreiben Sie CWinApp::OnFileNew mit Ihrer eigenen Funktion, wie unten gezeigt.

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 );

    }

}

-1voto

Traveling Tech Guy Punkte 25876

コール CMenu::EnableMenuItem mit den entsprechenden Menüpunkten und MF_DISABLED als zweiten Parameter. Hier ist die Dokumentation .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X