Veröffentlicht 15. April 200520 j Hallo ihr, hoffe, ihr könnt mir wieder bei meinem Problem helfen. Und zwar hab ich einen Hauptdialog(Hdlg), auf dem ein untergeordneter Dialog(UDlg) lieg. Auf UDlg liegt ein Editfeld. Ich habe mein Programm so geschrieben, dass wenn der Benutzer den HDlg vergrößert/verkleinert das Editfeld sich dementsprechend anpasst. Mit OnSizing() zeichne ich das Editfeld immer neu, wenn der Benutzer die Größe ändert. Das sieht wie folgt aus: void AdjustCalibration::OnSizing(UINT fwSide, LPRECT pRect) { CRect pDlg, rDlg; int move=0; GetClientRect(&pDlg); rDlg = pDlg; //Passe untergeordnete Dialoge an tab1.MoveWindow(0, 0, pDlg.Width()-100, pDlg.Height()-20, TRUE); //tab1 = UDlg //prüfe, ob Benutzer die Randgröße verändert hat und passe dann die Größe der Elemente an if(Dlg != rDlg) { if(Dlg.right > rDlg.right) { move = Dlg.right - rDlg.right; xButton -= move; tab1.widthEdit -= move; } else { move = rDlg.right - Dlg.right; xButton += move; tab1.widthEdit += move; } if(Dlg.bottom > rDlg.bottom) { move = Dlg.bottom - rDlg.bottom; tab1.heightEdit -= move; } else { move = rDlg.bottom - Dlg.bottom; tab1.heightEdit += move; } } Dlg = rDlg; //CRect Dlg //Passe Button und Elemente von untergeordneten Dialog(en) an Hauptdialog an tab1.m_ctrlEdit.MoveWindow(tab1.xEdit, tab1.yEdit, tab1.widthEdit, tab1.heightEdit, TRUE); CDialog::OnSizing(fwSide, pRect); }[/PHP] Wenn ich einen Text eingebe in dem Editfeld, ist alles okay. Jedoch wenn ich die Return-Taste bestätige, verschwindet der komplette UDlg und somit auch das Editfeld. :confused: Weshalb? Meine OnPaint() sieht genauso aus wie die OnSizing(), nur dass hier dann CDialog::OnPaint() aufgerufen wird. Wenn ich dann den UDlg anklicke, erscheint er(Udlg) mit dem Editfeld wieder. Jedoch ist kein neuer Zeilenanfang im Editfeld. Kann mir jemand helfen? Schon mal n ganz dickes [b]Dankeschön[/b] im Voraus!
17. April 200520 j ist jetzt nur so eine vermutung, aber überschreib mal die OnOK() Methode bei Untergeordnetem Dialog. ich hatte mal ein ähnliches problem bei einem TabCtrl(die verwenden ja auch untergeordnete Dialoge). also einfach virtual void OnOK(){}; in die Header Datei einfügen. Probiers einfach mal. Ciao Stefan
18. April 200520 j Danke erstmal für deinen Tipp. Habe das versucht, aber es klappt trotzdem nicht. Kann es auch damit zu tun haben, dass ich auf meinem Hauptdialog einen OK-Button habe und er deshalb bei return der untergeordnete Dialog verschwindet? Info: Beim Editfeld habe ich als Eigenschaft auch "Return möglich" aktiviert. Wäre für noch einen Tipp dankbar! Gruß Kitty
18. April 200520 j hmm... hab die Ursache gefunden. Beim Editfeld muss man "Mehrzeilig" und "Return möglich" aktivieren. :floet: Jetzt funktioniert es einwandfrei. Danke, dass ihr euch so bemüht habt mir zu helfen.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.