WinApi:为组合框添加样式

时间:2015-01-22 17:46:19

标签: c++ windows winapi

我正在尝试将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);

输出只是常规组合框,没有任何变化。

1 个答案:

答案 0 :(得分:3)

此特定样式只能在创建时指定。当documentation说出来时,{{3}}就会提到这一点:

  

<强> CBS_OWNERDRAWFIXED

     

指定列表框的所有者负责绘制其内容,并且列表框中的项目都具有相同的高度。创建组合框时,所有者窗口会收到WM_MEASUREITEM消息,当组合框的可视方面发生更改时,会收到WM_DRAWITEM消息。