Я хотел «поиграть» с новые расширенные стили, особенно те, которые манипулируют с флажками.
Проблема в том, что ни один из них не работает.
Я не могу определить, если TVS_EX_DOUBLEBUFFER
работает или нет, потому что мое дерево мало. Я не проверял TVS_EX_RICHTOOLTIP
еще. Кроме того, независимо от того, какой другой стиль я установил, я не вижу никакого эффекта.
Вот соответствующий фрагмент:
HWND hwndTV = CreateWindowEx(...);
// first, add checkboxes
DWORD dwStyle = GetWindowLong(hwndTV, GWL_STYLE);
dwStyle |= TVS_CHECKBOXES;
SetWindowLongPtr(hwndTV, GWL_STYLE, dwStyle);
// now add extended window styles
HRESULT h = TreeView_SetExtendedStyle(hwndTV,
TVS_EX_PARTIALCHECKBOXES, TVS_EX_PARTIALCHECKBOXES);
// insert items...
Я проверил возвращаемое значение Макрос TreeView_SetExtendedStyle и это не подвело, что еще больше увеличивает мое разочарование.
Можете ли вы показать мне, как правильно применять расширенные стили? Например, как правильно установить TVS_EX_PARTIALCHECKBOXES
или любой другой?
Спасибо.
Там нет ничего плохого в том, как вы устанавливаете стиль — это когда Вы устанавливаете это, в чем проблема.
Вам нужно установить TVS_EX_PARTIALCHECKBOXES
расширенный стиль до Ты устанавливаешь TVS_CHECKBOXES
, Это потому что настройка TVS_CHECKBOXES
запускает создание списка изображений состояния для древовидного списка, и этот список изображений включает только «частичные» изображения, если частичный стиль установлен во время его создания. Список изображений не воссоздается автоматически, если TVS_EX_PARTIALCHECKBOXES
устанавливается позже.
Кроме того, вы не можете указать TVS_CHECKBOXES
в призыве к CreateWindowEx
если вы хотите использовать стиль частичных флажков, так как нет возможности установить TVS_EX_PARTIALCHECKBOXES
пока контроль не был создан.