modaler Dialog



  • Hallo zusammen,

    ich würde gerne von einem Hauptfenster (CMainwindow) aus einen nichtmodalen Dialog starten. Ich würde dabei gerne ein modales PopUp Window erstellen.

    Also habe ich eine Klasse CMyModal vom Typen CWnd erstellt. Diesen in der Klasse des Hauptfenster als Member myComp deklariert.

    In der Funktion PreCreate() des Hauptfensters komm ich mit der Zeile

    myComp.Create(NULL,_T("My splash!"),WS_VISIBLE|WS_SYSMENU,CRect(pRect.Width() / 2 - 1 * xlength,41,pRect.Width()/2 + 1 * xlength,600),this,1,NULL);
    

    nciht weiter. Das Programm stürzt ab. Deshalb rufe ich nach der Erstellung des Hauptfensters eine weitere Funktion DrwaDialogs mit Create() myComp erstellt wird. Druch den zusätzlichen Befehl

    myComp.RunModalLoop(MLF_NOIDLEMSG);

    sollte eigentlich myComp ein modales Fenster werden, klappt aber nicht. Weiss jemand weiter?

    PS: Wenn ich mit dem Ressourceneditor einen Dialog erstelle, so kann ich z.b. Editflächen keine Variablen hinzufügen. weiss jemand auch hierfür einen Grund?

    Danke



  • Also habe ich eine Klasse CMyModal vom Typen CWnd erstellt

    Warum erstellst du eine Klasse die du vn CWnd ableitest, wenn du einen Dialog haben willst. Wenn du mit Dialogresourcen arbeiten willst, dann benutze CDialog oder CFormWindow.

    myComp.RunModalLoop(MLF_NOIDLEMSG);

    und warum gehst du in den ModalLoop wenn du das nichtmodal willst?

    Also wenn du einen Modalen Dialog haben willst, dann ruf doch einfach deinen Dialog mit DoModal() auf.

    PS: Wenn ich mit dem Ressourceneditor einen Dialog erstelle, so kann ich z.b. Editflächen keine Variablen hinzufügen. weiss jemand auch hierfür einen Grund?

    deine Resource wird mit keiner Klasse verbunden sein nehm ich mal an.



  • CTecS schrieb:

    Also habe ich eine Klasse CMyModal vom Typen CWnd erstellt

    Warum erstellst du eine Klasse die du vn CWnd ableitest, wenn du einen Dialog haben willst. Wenn du mit Dialogresourcen arbeiten willst, dann benutze CDialog oder CFormWindow.

    myComp.RunModalLoop(MLF_NOIDLEMSG);

    und warum gehst du in den ModalLoop wenn du das nichtmodal willst?

    Also wenn du einen Modalen Dialog haben willst, dann ruf doch einfach deinen Dialog mit DoModal() auf.

    PS: Wenn ich mit dem Ressourceneditor einen Dialog erstelle, so kann ich z.b. Editflächen keine Variablen hinzufügen. weiss jemand auch hierfür einen Grund?

    deine Resource wird mit keiner Klasse verbunden sein nehm ich mal an.

    Hi ,danke für deine hilfe.
    Ich wollte ja einen modalen Dialog, deshalb der Aufruf von RunModalLoop. DoModal() ist nur für CDialog definiert. Sollte auch ein CDialog sein, war mein Fehler.

    Im Ressourceneditor hatte ich dem Dialog schon eine Klasse hinzugefügt. Jedoch habe immer Probleme mit dem Visual 2005. Als ich heute den die .suo und die ncb. Dateien im Programmordner gelöscht habe, konnte ich nun den Eingabefeldern Variablen zuordnen. Damit hat sich das Problem dann auch erledigt.


Anmelden zum Antworten