Höhe einer ComboBox einstellen
-
Ich mache das nachdem ich die Einträge hinzufüge, aber es tut sich nichts.
-
das geht, habs probiert
((CComboBox*)pWnd)->SetItemHeight(-1, 28); //::SendMessage(pWnd->m_hWnd, CB_SETITEMHEIGHT, -1, 30);aber dannach z.b größe ändern
RECT rc; pWnd->GetWindowRect(&rc); pWnd->GetParent()->ScreenToClient(&rc); int nHeight=60; pWnd->MoveWindow(rc.left, rc.top, rc.right-rc.left, nHeight, 1);und schon ist die alte größe mit standart 15 pixel wieder hergestellt,
jetzt noch mal((CComboBox*)pWnd)->SetItemHeight(-1, 28);wieder 28 px. du wirst deine höhe irgendwo im ablauf anders setzen müssen,
kenn dein code nicht, aber bei mir wird die höhe in OnInitDialog() gesetzt und das funktioniertvolker
-
Das Problem ist: Ich will das Ding kleiner machen, weil es in ein PropertyGrid soll (wie in VS.NET). Das mag der anscheinend nicht so gerne...
Naja, werd wohl nicht darum kommen mir ne eigene ComboBox zu schreiben. Wollte mir den Aufwand eigentlich sparen, aber was solls. Thx
-
das geht schon, es ist nur eine frage wo im ablauf du die höhe der combobox setzt und was danach passiert. die nachfolgende kombination funktioniert doch.
// position ändern int x=1; int y=1; RECT rc; pWnd->GetWindowRect(&rc); pWnd->GetParent()->ScreenToClient(&rc); pWnd->MoveWindow(rc.left+x, rc.top+y, rc.right-rc.left, rc.bottom-rc.left, 1); //höhe neu setzen ((CComboBox*)pWnd)->SetItemHeight(-1, 28);und alles ist ok (nur eine frage der ablaufsteuerung) -> combobox selbst schreiben viel spaß
volker
-
Original erstellt von vdittrich:
**das geht schon, es ist nur eine frage wo im ablauf du die höhe der combobox setzt und was danach passiert. die nachfolgende kombination funktioniert doch.
**Also ich weiß nicht wie es bei dir ist. Bei mir funzt es nicht das Ding unter Standardhöhe zu schrumpfen. So mache ich es:
// ComboBox erstellen Create(WS_CHILD | WS_VSCROLL | CBS_SORT | CBS_DROPDOWNLIST, m_rcValue, static_cast<CWnd*>(m_pView), 0); SetItemHeight(-1, m_rcValue.Height());Original erstellt von vdittrich:
**-> combobox selbst schreiben viel spaß
**Ach, so schwer ist das garnicht. Eine Edit, einmal DrawFrameControl für den Button und ne popup-Liste. Naja, nicht schwer aber lästig...

[ Dieser Beitrag wurde am 04.07.2003 um 13:41 Uhr von MaSTaH editiert. ]
-
standart inst 15 px
((CComboBox*)pWnd)->SetItemHeight(-1, 8); = 8 px funktioniert doch
Create(WS_CHILD | WS_VSCROLL | CBS_SORT | CBS_DROPDOWNLIST, m_rcValue, static_cast<CWnd*>(m_pView), 0); SetItemHeight(-1, m_rcValue.Height()); // was sollte hier geändert werden
-
Selbst wenn ich anstatt m_rcValue.Height() eine 8 da hin schreibe bleibt das Ding stur...
-
Moment mal: geht das Ding von Pixeln oder von Dialog-Units aus? Ich denke doch Pixel...
-
Selbst wenn ich anstatt m_rcValue.Height() eine 8 da hin schreibe bleibt das Ding stur...
wenn m_rcValue.Height() != 8 ist dann wird an der combobox noch irgendwas geändert, was die höhe der combobox beeinflusst.
SetItemHeight(...) wird in pixel angegeben, auch create arbeitet mit pixel.
wenn du koordinaten über die Ressource abstimmst (z.b. als konstante in dein projekt einbettest) dann arbeitet du mit logischen einheiten.
-
Original erstellt von vdittrich:
wenn m_rcValue.Height() != 8 ist dann wird an der combobox noch irgendwas geändert, was die höhe der combobox beeinflusst.Und das heißt...?
Original erstellt von vdittrich:
auch create arbeitet mit pixel.ist ja ganz was neues!

Original erstellt von vdittrich:
wenn du koordinaten über die Ressource abstimmst (z.b. als konstante in dein projekt einbettest) dann arbeitet du mit logischen einheiten.Das sind keine Konstanten, sondern die Angaben aus dem RC-File. Logische Einheiten sind Definitionssache...
-
Original erstellt von vdittrich:
auch create arbeitet mit pixel.
ist ja ganz was neues!Original erstellt von vdittrich:
wenn du koordinaten über die Ressource abstimmst (z.b. als konstante in dein projekt einbettest) dann arbeitet du mit logischen einheiten.Das sind keine Konstanten, sondern die Angaben aus dem RC-File. Logische Einheiten sind Definitionssache...
--------------------meine ausdrucksweise ist sicher nicht so gut, das man mir unbedingt folgen muß.
ich glaube dennoch, das deine anfrage bis zum erbrechen beantwortet wurde.schönes wochenende
-
Auch schönes Wochenende. Bis zum erbrechen wurde meine Frage beantwortet, das stimmt. Das ändert aber nicht an der Tatsache, dass mir keine Antwort helfen konnte
.