Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Вниз
Combobox и манифест ХР Найти похожие ветки
← →
SPeller © (2004-11-07 17:44) [0]У меня новая проблема с комбобоксом. Создаю комбобокс таким кодом:
var
H: HWND;
begin
H := CreateWindowEx(WS_EX_CLIENTEDGE, "COMBOBOX", "cb1",
WS_CHILD or WS_BORDER or WS_VISIBLE or WS_CLIPSIBLINGS or WS_CLIPCHILDREN or
WS_TABSTOP or
CBS_HASSTRINGS or CBS_DROPDOWN{LIST} or WS_VSCROLL,
100, 0, 100, 100, Handle, 0, {HInstance}0, nil);
SendMessage(H, CB_ADDSTRING, 0, Integer(PChar("Some item 1")));
SendMessage(H, CB_ADDSTRING, 0, Integer(PChar("Some item 2")));
...
SendMessage(H, CB_ADDSTRING, 0, Integer(PChar("Some item 23")));
Комбобокс создается, но если у программы нет манифеста ХР, то он в открытом состоянии выглядит как и положено:
http://speller.narod.ru/img/other/combobox2.gif
Но если у программы есть манифест, то он выглядит вот так:
http://speller.narod.ru/img/other/combobox1.gif
При включенных и выключенных темах эффект одинаковый. Значение высоты контрола игнорируется, можно вписать хоть 0, хоть 10000. Полоса прокрутки появляется только если кол-во элементов больше примерно 30.
VCL-комбобокс ведет себя нормально в обоих случаях.
Кто-нибудь знает, как лечить такой глюк?
WinXP SP1a.
← →
Ученик (2004-11-07 19:06) [1]Возможно, можно проще, но VCL делает тоже самое :-)
var
ComboWndProc: Pointer;
function MyComboWndProc(HWindow: HWnd; Message, WParam: Longint;
LParam: Longint): Longint; stdcall;
begin
if Message = WM_CTLCOLORLISTBOX then begin
SetBkColor(WParam, clWhite);
Result := GetStockObject(WHITE_BRUSH)
end else
Result := CallWindowProc(ComboWndProc, HWindow, Message, WParam, LParam)
end;
...
ComboWndProc := Pointer(SetWindowLong(H, GWL_WNDPROC, LongInt(@MyComboWndProc)));
SendMessage(H, CB_ADDSTRING, 0, Integer(PChar("Some item 1")));
← →
SPeller © (2004-11-08 05:48) [2]С цветом возможно это решит проблему (пока не могу проверить), а как быть с высотой выпадающего списка?
← →
Ученик (2004-11-08 10:20) [3]Проблему с высотой решит добавление CBS_NOINTEGRALHEIGHT при вызове CreateWindowEx
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c