【发布时间】:2010-10-21 01:12:38
【问题描述】:
我有一个 ATL 应用程序,其中包含一个包含 TAB 控件的对话框。该应用程序使用通用控件清单。
在带有视觉样式的XP下,选项卡控件背景与对话框和控件(主要是复选框)颜色不同,因此看起来很丑。
我该如何解决这个问题?
【问题讨论】:
-
这里相同问题的“完美”答案:stackoverflow.com/questions/27085427/…
我有一个 ATL 应用程序,其中包含一个包含 TAB 控件的对话框。该应用程序使用通用控件清单。
在带有视觉样式的XP下,选项卡控件背景与对话框和控件(主要是复选框)颜色不同,因此看起来很丑。
我该如何解决这个问题?
【问题讨论】:
显然,要使用 XP 视觉样式正确着色选项卡控制页面,需要做一件事。
在每个页面的 WM_INITDIALOG 处理程序中,调用 uxtheme API EnableThemeDialogTexture
使用ETDT_ENABLETAB 标志,这会自动更改对话框及其所有子控件的背景颜色以在选项卡上适当地绘制。
对话框页面不需要任何类型的透明标志,或者实际上任何与以前不同的样式位设置。如果您在页面 DialogProc 中覆盖了 WM_ERASEBKGND 或 WM_CTLCOLORDLG,则需要恢复为默认处理(返回 FALSE)。
【讨论】:
Here您可以找到问题的答案。
【讨论】:
复选框会将 WM_CTLCOLORBTN 通知发布给其父级。如果,对于复选框控件 ID,父窗口的消息处理程序返回
GetStockObject(HOLLOW_BRUSH)
那么复选框应该用透明背景绘制,这应该会给你想要的外观。
【讨论】: