Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MFC: Editfeld mit untergeordneten Dlg verschwindet bei return!?

Empfohlene Antworten

Veröffentlicht

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!

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

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.