ComboBox Größe ändern

kogge29

Grünschnabel
MFC, Visual C++ 6.0, Dialogfeldbasierende Anwendung

Hi,

versuche während der Laufzeit des Programms (auf Anklicken eines Buttons) die Größe einer ComboBox zu ändern. Größe bleibt allerdings gleich bzw. es ändert sich Nichts.
Habe zwei Varianten probiert. Beide gehen nicht.
Wäre toll, wenn mir jmd. helfen könnte.

m_combo1 ist die Membervariable zur ComboBox.

Variante 1 mit SetWindowPos():

void CButtonDlg::OnButton1()
{
RECT Rect = {0,0,0,0};
LPRECT pRect = &Rect;
m_combo1.GetWindowRect(pRect);

int newHeight = pRect->bottom - pRect->top + 30; //Höhe + 30
int newWidth = pRect->right - pRect->left + 30; //Breite + 30
m_combo1.SetWindowPos(&wndTopMost,pRect->left,
pRect->top,newWidth,newHeight,SWP_SHOWWINDOW);
}

Variante 2 mit MoveWindow():

void CButtonDlg::OnButton1()
{
RECT Rect = {0,0,0,0};
LPRECT pRect = &Rect;
m_combo1.GetWindowRect(pRect);

pRect->bottom += 30;
m_combo1.MoveWindow(pRect,false);
m_combo1.ShowWindow(SW_SHOW); //hab's auch ohne probiert
}
 
Die Höhe einer Combo lässt sich AFAIK nur bei Ownerdraw-Items ändern, ansonsten ist die auf ca. 20 festgelegt. Die Breite lässt sich aber ändern. Mit der veränderten Höhe gibst du aber die gewünschte Aufklapphöhe der ListBox an.
 
Hi,


erstmal Danke für die Antwort. Das mit der Höhe ist klar, aber warum funktioniert das mit dem Verändern der Breite bei mir nicht?
Irgend ne Idee?

Danke
 
Ich habs grade ausprobiert, das klappt eigentlich?

m_ComboDepth.SetWindowPos( 0, 0, 0, 500, 500, SWP_NOZORDER | SWP_NOMOVE );
 
Tausend Dank!

Funktioniert jetzt auch bei mir. Aus irgend einem Grund wurden "pRect->left, pRect->top" in SetWindowPos() nicht anerkannt.
Aber wenn ich deine Variante mit SWP_NOZORDER | SWP_NOSIZE nehme umgehe ich das Problem einfach, da ich die ComboBox dann am selben Ort belasse.

Nochmal Danke
 
OK,
jetzt ist auch klar warum, meine Version nicht funtioniert hat:

frage mit
m_combo1.GetWindowRect(pRect);
die Koordinaten relativ zum Bildschirm ab und mit
m_combo1.SetWindowPos(..);
werden die Koordinaten in Relation zum Anwendungsfenster festgelegt.
Die ComboBox ist also irgendwo außerhalb des Anwendungsfensters gelandet.

Nochmals Danke.
 

Neue Beiträge

Zurück