TreeView_SetExtendedStyle не применяет определенные стили, что я делаю не так?

Я хотел «поиграть» с новые расширенные стили, особенно те, которые манипулируют с флажками.

Проблема в том, что ни один из них не работает.

Я не могу определить, если 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 или любой другой?

Спасибо.

0

Решение

Там нет ничего плохого в том, как вы устанавливаете стиль — это когда Вы устанавливаете это, в чем проблема.

Вам нужно установить TVS_EX_PARTIALCHECKBOXES расширенный стиль до Ты устанавливаешь TVS_CHECKBOXES, Это потому что настройка TVS_CHECKBOXES запускает создание списка изображений состояния для древовидного списка, и этот список изображений включает только «частичные» изображения, если частичный стиль установлен во время его создания. Список изображений не воссоздается автоматически, если TVS_EX_PARTIALCHECKBOXES устанавливается позже.

Кроме того, вы не можете указать TVS_CHECKBOXES в призыве к CreateWindowEx если вы хотите использовать стиль частичных флажков, так как нет возможности установить TVS_EX_PARTIALCHECKBOXES пока контроль не был создан.

4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector