Unterschied Dialog und Window



  • Hallo,

    was ist eigentlich der genaue Unterschied zwischen einem Dialog-Fenster und einem normalen Fenster in MFC?

    In manchen Code-Examples wird häufig kein Fenster zu Beginn erstellt (der Konstruktor ist leer), dafür wird ein Dialog-Fenster mit OnInitDialog etc. erstellt...
    Als Betrachter sieht man ja erstmal keinen Unterschied.

    VG
    Bernd


  • Mod

    Es werden immer Fenster erstelle, wenn auch das erzeugen eines rame Windows etwas verborgen in der MFC geschieht.

    Sowohl Dialoge als auch Dialoge sind Fenster. Der gravierenste Unterschied ist es, dass bei einem Dialog eine eigene Nachrichtenschleife in DoModal abläuft. In einer SDI/MDI Anwednung gibt es eine zentrale Message Loop in CWinApp::Run.



  • kann man innerhalb eines Windows (nicht Dialogs) auch Buttons etc. erstellen?

    //background-farbe 
    m_brushMyBackground.CreateSolidBrush( RGB(100, 0, 100 ) );
    
    CString strWndClass =
    AfxRegisterWndClass
    (
            CS_HREDRAW | CS_VREDRAW,
    	MyApp.LoadStandardCursor(IDC_ARROW),
    	m_brushMyBackground,
            MyApp.LoadStandardIcon( IDI_WINLOGO )
    );
    
    Create( strWndClass, _T( "MFC-Window" ) );  
    
    menu1.LoadMenu(IDR_MENU1);
    SetMenu(&menu1);
    

  • Mod

    Klar kanst Du das. Du erzeugst die Items genauso wie das Mainwindow. Als Parent gibt DU das Mainwindow an und die einzelnen Elemente haben den WS_CHILD Stil.



  • Martin Richter schrieb:

    Klar kanst Du das. Du erzeugst die Items genauso wie das Mainwindow. Als Parent gibt DU das Mainwindow an und die einzelnen Elemente haben den WS_CHILD Stil.

    bin erst am Anfang der MFC-Programmierung: geht das dann auch über die Funktion Create()?

    CButton myButton1;
    // Create a push button.
    myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
       CRect(10,10,100,30), pParentWnd, 1);
    

    Macht es Sinn, jedes Control auf diese Weise zu erstellen, oder ist die Verwendung einer Dialogbox innerhalb des SDI-Windows sinnvoll? Hab gelesen, dass Dialogboxen gewisse Einschränkungen aufweisen.

    Dann hab ich grad was von Document/View Model gelesen: ist es ratsam in einem Projekt das umzusetzen? Ich möchte gern ein SDI-Window erstellen mit einem Menü, verschiedenen Controls wie Buttons etc. Zur Unterteilung sollen Tabs (ähnlich wie im IE herhalten). Die gemachten Einstellungen sollen auf einer CF-Card gespeichert werden können.

    Welche Vorteile bringen mit in diesem grob-genannten Zusammenhang das Document/View Modell?



  • gibt es auch eine Möglichkeit über Create eine Dialogbox im SDI-Fenster angezeigt zu bekommen? Die Dialogbox selbst hab ich als Resource-File vorhanden, genauso ist die resource.h eingebunden...

    das mit dem Button hat schon mal funktioniert.


  • Mod

    Ja! Auch das geht. Nimm als View einen CFormView!



  • Martin Richter schrieb:

    Ja! Auch das geht. Nimm als View einen CFormView!

    Macht es Sinn, jedes Control auf diese Weise zu erstellen, oder ist die Verwendung einer Dialogbox innerhalb des SDI-Windows sinnvoll? Hab gelesen, dass Dialogboxen gewisse Einschränkungen aufweisen.

    Dann hab ich grad was von Document/View Model gelesen: ist es ratsam in einem Projekt das umzusetzen? Ich möchte gern ein SDI-Window erstellen mit einem Menü, verschiedenen Controls wie Buttons etc. Zur Unterteilung sollen Tabs (ähnlich wie im IE herhalten). Die gemachten Einstellungen sollen auf einer CF-Card gespeichert werden können.

    Welche Vorteile bringen mit in diesem grob-genannten Zusammenhang das Document/View Modell?

    Nur um zu wissen ob ich hier auf dem richtigen Weg bin... oder ob es einen besseren gibt 😉


  • Mod

    derFragensteller schrieb:

    Martin Richter schrieb:

    Ja! Auch das geht. Nimm als View einen CFormView!

    Macht es Sinn, jedes Control auf diese Weise zu erstellen, oder ist die Verwendung einer Dialogbox innerhalb des SDI-Windows sinnvoll? Hab gelesen, dass Dialogboxen gewisse Einschränkungen aufweisen.

    Was meinst Du damit? Ich verstehe Deine Frage nicht, weil in einem CFormView eine Ressource benutzt wird und nicht "jedes Control einzeln erzeugt wird".

    Was meinst Du bitte mit "Hab gelesen, dass Dialogboxen gewisse Einschränkungen aufweisen.". Eine CFormView ist keine DiaogBox. Es ist ein nicht modaler Dialog in einem CView innerhalb des SDI/MDI Modells der MFC. Gewiss keine Dialogbox.

    Doc/View hat Vorteile und Nachteile. Ich benutze es nur.
    Ich kenne Deine Anwendung nicht und weiß nicht was Du willst und die Brocken, die Du hier offenbarst lassen mich nichts erahnen.


Anmelden zum Antworten