Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Servus,

ich möchte ein Editfeld zu laufzeit ändern.


        RECT rect;

	m_ceComment.GetRect(&rect);

	rect.bottom = rect.bottom + 28;

	m_ceComment.SetRect(&rect);

	UpdateWindow();

so gehts leider nicht. da wird nur das innere RECT geändert.

Geschrieben

ähm.... mit welcher IDE arbeitest du denn?

Also beim Borland builder siehts etwa wie folgt aus:


edt_eingabefeld.height = edt_eingabefeld.height+10;

aber kommt halt auf die ide an, wie die das händelt

Geschrieben

VC++ 6.0 "MFC" habe ich leider vergessen



	CWnd *wnd = GetDlgItem(IDC_ED_COMMENT);

	wnd->GetWindowRect(&rect);

	rect.bottom = rect.bottom + 28;

	SetWindowPos(wnd,rect.left,rect.top,rect.right,rect.bottom,NULL);

	UpdateWindow();

Ich weis nicht, da bewegt sich nichts?

Geschrieben

ja.


	CWnd *wnd = GetDlgItem(IDC_ED_COMMENT);

	wnd->GetWindowRect(&rect);

	rect.bottom = rect.bottom + 28;

	wnd->SetWindowPos(wnd,rect.left,rect.top,rect.right,rect.bottom,NULL);

	UpdateWindow();

so bewegt sich auch nichts.

Geschrieben


void CMyDlg::OnSetfocusEdComment() 

{

	CRect rect;

	CWnd *wnd = GetDlgItem(IDC_ED_COMMENT);

	wnd->GetWindowRect(&rect);

	rect.bottom = rect.bottom + 28;

	wnd->SetWindowPos(wnd,rect.left,rect.top,rect.right,rect.bottom,NULL);

	UpdateWindow();


}

Mal sehen, jetzt gehts erst mal nach hause, schönes wochenende

Geschrieben


void CMyDlg::OnSetfocusEdComment() 

{

	CRect rect;

	CWnd *wnd = GetDlgItem(IDC_ED_COMMENT);

	wnd->GetWindowRect(&rect);

	rect.bottom = (rect.bottom + 28);

	wnd->MoveWindow(rect,TRUE);

	UpdateWindow();

}

Funktioniert bei mir.

Geschrieben

void CMyDlg::OnSetfocusEdComment() 

{

	CRect rect;

	CWnd *wnd = GetDlgItem(IDC_ED_COMMENT);

	wnd->GetWindowRect(&rect);

	rect.bottom = (rect.bottom + 28);

	wnd->MoveWindow(rect,TRUE);

	UpdateWindow();

}

Funktioniert bei mir.

Wen ich den Code bei mir einfüge, dann verschiebt es mir das Editfeld

an eine ganz andere Stelle. Die Höhe wird geändert, aber das ganze Editfeld

verschiebt sich. Kann es eventuell daran liegen, dass das Editfeld in einem

Static Rahmen liegt? Denn es wird aus diesem verschoben und liegt dann

daneben.

TinTin

Geschrieben

Mit GetWindowRect bekommst du Koordinaten relativ zur linken oberen Ecke des Bildschirms. MoveWindow geht aber davon aus, dass die Koordinaten relativ zur linken oberen Ecke des Clientbereichs des Elternfensters sind.

Es sollte ausreichen, wenn du statt GetWindowRect GetClientRect verwendest.

Ach ja, das hier:

rect.bottom += 28;

macht weniger den Eindruck eines BASIC-Umsteigers.

Geschrieben
Es sollte ausreichen, wenn du statt GetWindowRect GetClientRect verwendest.

Das ist noch nicht ganz die Lösung.

CWnd *wnd = GetDlgItem(IDC_ED_COMMENT);

	wnd->GetClientRect(&rect);
ergibt: {top=0 bottom=16 left=0 right=121} (das sind nicht die Koordinaten im Client, die Maße des Feldes)

rect.bottom += 28;

wnd->MoveWindow(rect,TRUE);

setzt mir das Editfeld dann auch genau ins linke obere Eck des Fenster.

Was auch logisch ist.

Geschrieben

Danke Klotzkopp,

dass ist die Lösung. ScreenToClient hab ich gesternauch gefunden, hatte aber

leider noch keine Zeit zu posten. Dank auch nochmal an alle für Eure Bemühung.

TinTin

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...