Hauptfenster zuerst



  • In arbeite mit Visual Studio 2010 Professional MFC. In meiner Anwendung habe ich
    ein Dialogfeld angelegt, und in der InitInstance-Funktion folgenden Text:

    CMeinDialog dlg;
    dlg.DoModal();

    pMainFrame->ShowWindow(m_nCmdShow);
    pMainFrame->UpdateWindow();

    Beim Starten müsste demnach erst der Dialog angezeigt werden, und dann erst das
    Hauptfenster. Es kommt aber zuerst das Haupfenster und dann der Dialog. Unschön !
    Kennt sich jemand aus, und beantwortet meine Problem ?



  • Habe eine Lösung gefunden, nur verstehe ich sie nicht. Ich habe den Dialog-Aufruf
    weiter oben platziert, nach dem Aufruf von AddDocTemplate(.. . Kann mir das jemand
    erklären ? Die ganze MFC ist ziemlich kompliziert ! Bei .NET ist alles schöner !


  • Mod

    Du hast irgendwo einen LoadFrame drin, oder ein ProcessShellCommand.
    Das erzeugt evtl. schon das Fenster und zeigt es an.



  • z.B. bei SDI - Anwendung:

    - Neuen Dialog anlegen (Ressourcenansicht)
    - Dialog starten in "OnInitialUpdate"

    Bei Dialog - Anwendung in "OnInitDialog"



  • MFC-Maker schrieb:

    Habe eine Lösung gefunden, nur verstehe ich sie nicht. Ich habe den Dialog-Aufruf
    weiter oben platziert, nach dem Aufruf von AddDocTemplate(.. . Kann mir das jemand
    erklären ? Die ganze MFC ist ziemlich kompliziert ! Bei .NET ist alles schöner !

    Machst Du da zwischendurch noch was anderes? Im Kommentar steht:

    // Das einzige Fenster ist initialisiert und kann jetzt angezeigt und aktualisiert werden.
    	m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
    	m_pMainWnd->UpdateWindow();
    

    Bringst Du das Dialog.DoModal() vor diesem Aufruf wird nur das Dialogfenster angezeigt und es wird solange gewartet, bis der Dialog geschlossen wird. Rufst Du das nach dem Aufruf von m_pMainWnd->UpdateWindow() auf, dann siehst Du das Hauptfenster, bleibst aber noch in der InitInstance(), solange der Dialog offen ist.
    Ich hab eine Anwendung, da soll genau das letzte (was Du als unschön bezeichnet hast) eintreten, da ich dort einen Benutzernamen und ein Passwort zum Anmelden abfrage. Bei mir funktioniert das soweit ganz gut oder anders ausgedrückt, ich kann mit der Lage des Aufrufs genau das steuern.


Log in to reply