MFC-Programm ohne Dialogfeldinformationen in der Ressourcendatei



  • Gibt es eine Möglichkeit, ein Dialogfeld zu erstellen, ohne daß dessen Aussehen in der RC-Datei festgelegt wird?
    Normalerweise hat man ja eine von CDialog abgeleitete Dialogfeldklasse, während das Layout eben extern in der RC-Datei gespeichert wird. Gibt es jetzt die Möglichkeit, das alles in der H- bzw. CPP-Datei zu realisieren, so daß ich zum Beispiel die Buttonpositionen und die Fenstergröße im Konstruktor festlege?


  • Mod

    Pack ein leeres Dialog template in Deinen Code oder die rc Datei. Dann erzeuge diesen Diaog leer und erzeuge dann alle Controls selbst per CreateWindow.
    Du kannst sichlich auch das ganze template als Byte Sequenz in der Cpp Datei ablegen.



  • Ich habe es mal folgendermaßen probiert. (CreateWindow ist ja nur eine Win-API-Funktion, während CreateIndirext eine MFC-Funktion ist.)

    CDialogfeldDlg dlg;
    DLGTEMPLATE dlgtmpl;
    
    dlgtmpl.x=0;
    dlgtmpl.y=0;
    dlgtmpl.cx=186;
    dlgtmpl.cy=95;
    dlgtmpl.dwExtendedStyle=0;
    dlgtmpl.style=DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU;
    dlgtmpl.cdit=0;
    
    dlg.CreateIndirect (&dlgtmpl);
    
    dlg.DoModal ();
    

    Aber da passiert nichts. Das Dialogfeld geht nicht auf. (Diese Zeilen befinden sich übrigens in einer OnButton-Funktion des Hauptdialogfeldes.) Kann mir jemand erklären, woran das liegt?



  • Hat sich erledigt. Ich habe das ganze bereits rausgefunden.


Anmelden zum Antworten