Höhe einer ComboBox einstellen



  • Versuchs mal mit MoveWindow (nur so eine Idee)



  • Höhöhö 😃 . Ich habe bei Create schon das richtige Rechteck mitgegeben...

    EDIT:
    MoveWindow funzt auch irgendwie nicht? Gibt es da irgendeinen Style (CBS_FIXEDHEIGHT oder so) der das verhindert. Im Dialog-Editor kann man die Höhe nämlich auch nicht verändern... Ich guck nochmal nach!

    [ Dieser Beitrag wurde am 03.07.2003 um 15:36 Uhr von MaSTaH editiert. ]



  • CBS_NOINTEGRALHEIGHT gibt es. Aber irgendwie funzt das auch nicht so ganz wenn ich den setze. 😕

    EDIT:

    CBS_NOINTEGRALHEIGHTSpecifies that the size of the combo box is exactly the size specified by the application when it created the combo box. Normally, Windows sizes a combo box so that the combo box does not display partial items.

    Er macht das Dinge aber nicht in der Größe die ich bei Create angebe... Maaaan! Wie einem so ne beschissene Combo-Box den Nerv töten kann 😃 .

    [ Dieser Beitrag wurde am 03.07.2003 um 15:45 Uhr von MaSTaH editiert. ]



  • Soviel ich weiss, passt sich die Combobox der gewählten Schriftart in der Höhe an.



  • Das gilt nur für die Aufklappsektion



  • Original erstellt von RenéG:
    Das gilt nur für die Aufklappsektion

    Shice. Was mach ich denn dann? Eigene Combobox-Klasse schreiben? Hmmmm, neee! 😕



  • Hm, du kennst doch bestimmt die PropertyBrowser wie in VC7 oder VBasic? Die Comboboxen da sind auch selbergeschrieben. Is gar net so schwer, wie man denkt.



  • Genau so ein PropertyGrid schreibe ich gerade 😉 . Naja, habs jetzt anders gelöst. Sieht ganz passabel aus. Thx... 🙂



  • was hast du den für eine größe in rect (höhe) angegeben ?
    info siehe sonst movewindow.

    volker



  • @vdittrich: Das Problem ist nicht, dass ich etwas falsches bei Create oder MoveWindow angebe, sondern, dass die ComboBox sich wehrt meine gewünschte Größe anzunehmen.



  • eine combobox hat wenn man es richtig nimmt drei höhen, welche meinst du denn



  • Original erstellt von vdittrich:
    eine combobox hat wenn man es richtig nimmt drei höhen, welche meinst du denn

    Drei? Ich kenn nur 2!
    1.) ComboBox auf
    2.) ComboBox zu

    Ich meine die erste. Kann man aber nicht umsetzen weil Windows dazwischenfunkt. Die Höhe einer ComboBox im zugeklappten Zustand kann man anscheinend nicht verändern, sonst würde ich doch nicht danach fragen...



  • 1. SetItemHeight(-1, 15); nur der sogenannte container
    2. mit movewindow (kann auch setwindowpos sein) die aufgeklappte combobox
    3. ist die differenz aus schrifthöhe zur gesetzten höhe der aufgeklappten combobox (wird im style festgelegt)

    volker

    [ Dieser Beitrag wurde am 03.07.2003 um 16:25 Uhr von vdittrich editiert. ]



  • 4.) Die Höhe des Rahmens
    5.) Die Höhe des Textes
    6.) ... 🙄



  • BTW: Hättest du die vorigen Posts richtig gelesen wüsstest du, dass ich nur die Größe des "Containers" umstellen will....



  • sorry beleidigen muß ich mich nicht lassen, und es wurde in deiner anfrage alles gesagt.

    //pWnd ist pointer von der combobox
      RECT rc; pWnd->GetWindowRect(&rc);
      pWnd->GetParent()->ScreenToClient(&rc);
      //das ist deine neue höhe der aufgeklappten combobox  
      int nHeight=60;
      pWnd->MoveWindow(rc.left, rc.top, rc.right-rc.left, nHeight, 1);
    

    volker



  • Ich will dich nicht beleidigen, aber du redest die ganze Zeit am Thema vorbei. Es geht nicht um die aufgeklappte Combobox, sondern um die geschlossene. Und deren Höhe lässt sich so ohne weiteres nicht mit MoveWindow verändern. Meinst du allen Ernstes ich hätte MoveWindow nicht schon lange bevor ich diesen Thread gepostet habe ausprobiert? 🙄



  • deine höhe wird definitiv mit SetItemHeight(-1, h) geändert,

    aber sobald in combobox alle einträge gelöscht werden bzw. ein neuer eintrag hinzugefügt wird (wenn vorher leer war) muß nachher SetItemHeight(-1, h) neu gesetzt werden



  • 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 funktioniert

    volker


Anmelden zum Antworten