Nichtmodeler Dialog lässt sich nicht verschieben und schliessen



  • Hallo,

    habe da folgendes Problem wenn ich eine nichtmodalen Dialog erstelle und ihn anzeige kann ich ihn nicht mehr über das häckchen rechts oben schliessen und auch nicht verschieben. Das Programm kann ich dann nur über den Taskmanager schliessen. Weis jemand warum und wioe ich das beheben kann?

    vielen Dank im voraus

    CAttentionDLg attDlg;             // Nichtmodaler dialog
    attDlg.Create(IDD_DIALOG2); 
    attDlg.ShowWindow(SW_SHOW);
    attDlg.UpdateWindow();
    


  • Servus,

    keine Ahnung warum das passiert, aber ich mache das immer mit dem Zeiger den kann ich dann auch schön an irgendwas übergeben:

    CAttentionDLg *pAttDlg = new CAttentionDLg();
    pAttDlg->Create(IDD_DIALOG2); 
    pAttDlg->ShowWindow(SW_SHOW);
    
    //und wenn irgendwann fertig
    
    delete pAttDlg;
    

    Probiers doch mal einfach so....
    Vielleicht funzt es..
    Ansonsten setz mal einen Brechpunkt *würg* und debugge mal durch. Irgendwo muss der ja hängen bleiben. Du kannst auch in die OnInit von dem Dialog mal einen reinsetzen dann siehst du ja ob alles richtig läuft.

    *winke*
    Hellsgore



  • danke funktioniert aber trotzdem nicht

    :-((



  • Brechpunkt mal gesetzt?
    da läuft doch dann irgendwas schief....

    debugge mal durch



  • Hi,

    einen nichtmodalen Dialog musst du grundsätzlich mit new erstellen, da er (bzw. das Dialog objekt) ja gelöscht wird, wenn die Funktion beendet wird und die Funktion (im Gegensatz zu einem modalen Dialog) weiter ausgeführt wird, sobald der Dialog erstellt wurde.

    Wenn du den nichtmodalen Dialog als Hauptfenster haben willst, musst du unbedingt die Membervariable m_pMainWnd deiner CWinApp-Klasse auf deinen nichtmodalen Dialog zeigen lassen (normalerweise in InitInstance [und dann natürlich TRUE statt FALSE zurückgeben]).

    Grüße Rapha



  • sers probier es mal so

    CmeinDialog Dialog;
     Dialog.Create(IDD_DIALOG1); 
     Dialog.ShowWindow(SW_SHOW);
     Dialog.UpdateWindow(); 
     MSG msg; 
    
      while (GetMessage (&msg, NULL, 0, 0)) 
      { 
        TranslateMessage (&msg); 
        DispatchMessage  (&msg); 
      } 
      return msg.wParam;
    


  • vielen Danke es funktioniert schon besser aber ein return kann ich nicht einsetzen im anschluss da ich weitere Prozeduren durchführe. Der Dialog soll nur warten bis ein Taster gedrückt wird dann soll er sich schliessen und die weitere Prozedur ausführen.


Anmelden zum Antworten