ATL App中的TAB控件背景,XP风格
我有一个 ATL 应用程序,其中包含一个包含 TAB 控件的对话框。 该应用程序使用通用控件清单。
在具有视觉样式的 XP 下,选项卡控件背景的颜色与对话框和控件(主要是复选框)的颜色不同,因此看起来相当难看。
我该如何解决这个问题?
I have an ATL application with a dialog containing a TAB control. The App uses a common controls manifest.
Under XP with visual styles, the tab control background is a different color than the dialog and the controls (mostly checkboxes), so it looks quite ugly.
How can I fix that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
显然,要使用 XP 视觉样式正确着色选项卡控制页面,需要做一件事。
在每个页面的 WM_INITDIALOG 处理程序中,调用 uxtheme API
EnableThemeDialogTexture
使用
ETDT_ENABLETAB
标志,这会自动更改对话框及其所有子控件的背景颜色,以便在选项卡上正确绘制。对话框页面不需要任何类型的透明标志,或者实际上不需要与以前不同的任何样式位设置。 如果您在页面 DialogProc 中覆盖了
WM_ERASEBKGND
或WM_CTLCOLORDLG
,则需要恢复为默认处理(返回FALSE
)。There is - apparently - one thing to do to get tab control pages colored correctly using XP visual styles.
In the WM_INITDIALOG handler for each page, call the uxtheme API
EnableThemeDialogTexture
With the
ETDT_ENABLETAB
flag this automatically changes the background color of the dialog and all its child controls to paint appropriately on a tab.The dialog pages do not need any kind of transparent flag, or indeed any style bit set differently from previously. If you have overridden
WM_ERASEBKGND
orWM_CTLCOLORDLG
in your pages DialogProc you will need to revert to default handling (returnFALSE
).此处 你可以找到你的问题的答案。
Here you could find answer to your question.
这些复选框将向其父级发布 WM_CTLCOLORBTN 通知。 对于复选框控件 ID,如果父窗口的消息处理程序返回结果,
则应使用透明背景绘制复选框,这应为您提供所需的外观。
The check boxes will post WM_CTLCOLORBTN notifications to their parent. If, for the checkbox control IDs, the parent window's message handler returns the result of
then the check boxes should be drawn with a transparent background, which should give you the look you want.