我有一个 ATL 应用程序,其中包含一个包含 TAB 控件的对话框。该应用程序使用通用控件清单。
在具有视觉样式的 XP 下,选项卡控件背景与对话框和控件(主要是复选框)颜色不同,因此看起来很丑。
我该如何解决?
显然,要使用 XP 视觉样式正确着色选项卡控制页面,需要做一件事。
在每个页面的 WM_INITDIALOG 处理程序中,调用 uxtheme APIEnableThemeDialogTexture
使用该ETDT_ENABLETAB
标志,它会自动更改对话框及其所有子控件的背景颜色,以在选项卡上适当地绘制。
对话框页面不需要任何类型的透明标志,或者实际上任何与以前不同的样式位设置。如果您已覆盖DialogProcWM_ERASEBKGND
或WM_CTLCOLORDLG
在您的页面中,您将需要恢复为默认处理(返回FALSE
)。
复选框将向其父级发布 WM_CTLCOLORBTN 通知。如果对于复选框控件 ID,父窗口的消息处理程序返回
GetStockObject(HOLLOW_BRUSH)
那么复选框应该用透明背景绘制,这应该会给你想要的外观。
在这里你可以找到你的问题的答案。