Combobox horizontal scrollen wie ?



  • Ich habe eine Dialogvorlage für einen modalen Dialog erstellt.
    Darauf ordnete ich eine Combobox an. Wie kann ich erreichen, dass
    ich die Combobox horizontal srollen kann ? Kann man auf dem modalem
    Dialogfeld, auch Steuerelemente, ohne den Dialog-Editor anordnen. z.B.
    mit m_combo.Create(... . Es ging bei einer CDialogBar. Bei einer
    Listbox konnte man die Funktion "SetHorizontalExtend(..." anwenden, bei
    der Combobox ging das nicht. wieso ?


  • Mod

    Weil diese Funktion eben für ComboBoxen nicht implementiert ist...
    Das eine Klasse etwas kann, heißt nicht, dass eine andere Klasse das auch kann. Zudem das Ganze letzten Endes in dr WinAPI vergraben ist und nicht in der MFC!

    Workarround:
    Du kannst versuchen mit GetComboBoxInfo, Dir das Handle für die ListBox zu besorgen und dann direkt SetHorizontalExtend anzuwenden.



  • Es geht übrigens doch ! Wenn Du eine DialogFeld-Vorlage mit dem
    Dialog-Editor erstellst, und Platz lässt für die Combobox, und die
    CComboBox zur Laufzeit generierst, dann geht es folgendermasen:

    class CMeinDialog : CDialog // die Klasse meines modalen Dialogs

    CComboBox cbb;

    CMeinDialog.cpp

    ...OnInitDialog ...

    cbb.Create( ... WS_HSCROLL ...
    cbb.SetHorizontalExtend(1oo),

    Wenn Du es aktzeptieren kannst, bei den MFC muss man die ganze Zeit
    tricksen.Ich hab geringfügig Erfahreung mit C#. Das ist einheitlicher,
    un meines erachtens besser.


  • Mod

    Upps mir ist glatt entgangen, dass dieses Control auch CB_SETHORIZONTALEXTENT als Nachricht hat.

    Bist Du sicher das WS_HSCROLL notwendig ist? Wenn es nicht mehr Ressource Editor geht, geht es evtl. nachträglich mit ModifyStyle. Zur Not evtl. das Listbox Control holen mit GetComboBoxInfo.


Anmelden zum Antworten