Hallo,
Ik heb in m'n programmaatje een combobox geplaatst, met daarin enkele items die allemaal in de WM_CREATE worden toegevoegd met ComboBox_AddString (). Het maken van de combobox window is natuurlijk ook in de WM_CREATE en ziet er zo uit:
De grootte van de combobox wordt bepaald in de WM_SIZE met een MoveWindow () aanroep.
Nu het probleem. In Vista gaat alles goed, de items staan in de combobox, en de lijst opent als je op het v knopje klikt. Maar in XP daarentegen opent de lijst zich niet als ik op het v knopje druk. Er verschijnt gewoon simpelweg niets extra's. Ik weet wel zeker dat de items zijn toegevoegd, want als ik een knop maak die ComboBox_SetCurSel () aanroept, verandert de selectie naar het goed item.
Ik heb de volgende messages gestuurd als controle:
- CB_GETDROPPEDWIDTH (ongeveer 110 op xp en vista)
- CB_GETITEMHEIGHT (wparam=0; geeft 15 op xp en vista)
- CB_GETMINVISIBLE (30 op xp en vista)
- CB_GETDROPPEDSTATE (1 op xp en vista, ik 'open' de combobox voordat ik de messages gebruik)
- CB_GETDROPPEDCONTROLRECT
Alleen de laatste laat duidelijk verschillende waarden zien op xp en vista. Op vista is namelijk het verschil tussen de top en bottom waarde in de RECT rond de 200, en op xp is dat maar rond de 20. Dat is dan denk ik ook het probleem.
Ik heb al geprobeerd de cx en de cy al in de WM_CREATE in te stellen, voor het geval dat 'ie de grootte daar al bepaald, maar dat werkte niet. Ik kan op MSDN ook geen messages vinden die ik kan sturen om de dropped control rect te veranderen.
Heeft iemand enig idee wat er met die combobox aan de hand kan zijn dat 'ie wel op vista en niet op xp opent?
Alvast bedankt,
Vincent
Ik heb in m'n programmaatje een combobox geplaatst, met daarin enkele items die allemaal in de WM_CREATE worden toegevoegd met ComboBox_AddString (). Het maken van de combobox window is natuurlijk ook in de WM_CREATE en ziet er zo uit:
C++:
1
2
3
4
5
| hwndCombo_A = CreateWindow (WC_COMBOBOX, NULL, WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, 0, 0, 0, 0, hwnd, (HMENU) IDC_COMBO_A, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL); |
De grootte van de combobox wordt bepaald in de WM_SIZE met een MoveWindow () aanroep.
Nu het probleem. In Vista gaat alles goed, de items staan in de combobox, en de lijst opent als je op het v knopje klikt. Maar in XP daarentegen opent de lijst zich niet als ik op het v knopje druk. Er verschijnt gewoon simpelweg niets extra's. Ik weet wel zeker dat de items zijn toegevoegd, want als ik een knop maak die ComboBox_SetCurSel () aanroept, verandert de selectie naar het goed item.
Ik heb de volgende messages gestuurd als controle:
- CB_GETDROPPEDWIDTH (ongeveer 110 op xp en vista)
- CB_GETITEMHEIGHT (wparam=0; geeft 15 op xp en vista)
- CB_GETMINVISIBLE (30 op xp en vista)
- CB_GETDROPPEDSTATE (1 op xp en vista, ik 'open' de combobox voordat ik de messages gebruik)
- CB_GETDROPPEDCONTROLRECT
Alleen de laatste laat duidelijk verschillende waarden zien op xp en vista. Op vista is namelijk het verschil tussen de top en bottom waarde in de RECT rond de 200, en op xp is dat maar rond de 20. Dat is dan denk ik ook het probleem.
Ik heb al geprobeerd de cx en de cy al in de WM_CREATE in te stellen, voor het geval dat 'ie de grootte daar al bepaald, maar dat werkte niet. Ik kan op MSDN ook geen messages vinden die ik kan sturen om de dropped control rect te veranderen.
Heeft iemand enig idee wat er met die combobox aan de hand kan zijn dat 'ie wel op vista en niet op xp opent?
Alvast bedankt,
Vincent