Визуальный стиль, установленный на кнопке BS_CHECKBOX, переопределяет NM_CUSTOMDRAW - PullRequest
0 голосов
/ 07 января 2019

Я хочу создать флажок в C ++ WinAPI с пользовательским растровым ресурсом в качестве фактического флажка.

К сожалению, когда я создаю WM_NOTIFY -совместимый флажок (который на самом деле имеет дело с NM_CUSTOMDRAW значимым образом), он, кажется, работает просто отлично, за исключением одной вещи: флажок, кажется, исчезает при изменении состояний. Похоже, это связано с визуальным стилем, поэтому я просто сбросил визуальный стиль с помощью SetWindowTheme(chkLogging, _T(" "), _T(" "));.

HWND chkLogging = CreateWindowEx(
    NULL,
    _T("button"),
    _T("Export to log file"),
    WS_VISIBLE | WS_CHILD | BS_CHECKBOX | BS_NOTIFY,
    300, 100, 100, 20,
hWnd, (HMENU)IDC_EXPORTLOG, NULL, NULL);
CheckDlgButton(hWnd, IDC_EXPORTLOG, BST_CHECKED);
SetWindowTheme(chkLogging, _T(" "), _T(" "));

К сожалению, установка темы для этого HWND переопределит рендеринг NM_CUSTOMDRAW. Я проверил это, удалив строку SetWindowTheme и попробовав тему по умолчанию, и флажок NM_CUSTOMDRAW работал как шарм.

Обычно это не проблема, но на самом деле это работает так, как будто предназначено для обычных кнопок.

Любая помощь по этому вопросу будет принята с благодарностью:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...