我希望在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
的工作原理很吸引人。
通常这不是问题,但实际上它似乎可以正常用于普通按钮。
在此问题上的任何协助将不胜感激:)