我正在尝试将CBS_OWNERDRAWFIXED样式添加到现有的组合框中,我的代码不起作用,我不明白为什么。 我怀疑可能是表达式oldStyle | addedStyle无效,但我无法弄清楚原因。
HWND hwnd = CreateWindow(
L"ComboBox",
L"",
WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST ,
200,
200,
200,
200,
parentHandle,
(HMENU)1,
GetModuleHandle(NULL),
NULL);
auto comboBoxStyle = GetWindowLongPtr(hwnd, GWL_STYLE);
comboBoxStyle = comboBoxStyle | CBS_OWNERDRAWFIXED;
SetWindowLongPtr(hwnd, GWL_STYLE, comboBoxStyle);
输出只是常规组合框,没有任何变化。
答案 0 :(得分:3)
此特定样式只能在创建时指定。当documentation说出来时,{{3}}就会提到这一点:
<强> CBS_OWNERDRAWFIXED 强>
指定列表框的所有者负责绘制其内容,并且列表框中的项目都具有相同的高度。创建组合框时,所有者窗口会收到WM_MEASUREITEM消息,当组合框的可视方面发生更改时,会收到WM_DRAWITEM消息。