And*_*ndy 4 c++ user-interface winapi visual-studio-2005
我正在使用Visual Studio 2005(以及C++中的win32 API),我有一个使用内置对话框编辑器设计的窗口.
在运行时,我希望能够使用它CreateWindow()来添加新的控件.这是有效的,但是我创建的控件看起来都很难看.出于具体的目的,我添加的控件是一个TabControl,当我使用内置的对话框编辑器添加它时,选项卡标签中的文本看起来不错.当我在运行时创建它时CreateWindow(),文本是大而粗的,看起来不合适.
我发现在MSDN上使用Windows XP视觉样式,它似乎描述了正确区域中的内容,但是当我按照其中的说明(嵌入清单)时,动态创建的控件似乎是比使用的更新的样式.对话框编辑器(选项卡控件的背景颜色更浅).
我也发现了这个SetWindowTheme()功能.我不太确定如何使用这个函数...我希望我可以GetWindowTheme()在窗口上使用,然后将其结果传递SetWindowTheme()给它们看起来一样,但是GetWindowTheme()返回HTHEME,我不知道你甚至可以用这些做什么......你绝对不能把它们传递给它们SetWindowTheme().
如果您希望人们能够提供帮助,您真的需要告诉我们您目前正在做什么(代码).这个答案将成为一个正确答案的猜测.所以.
您可能不需要使用主题句柄,只要为控件正确设置窗口样式,只需为您的应用启用主题就足够了.
您需要确保WM_SETFONT向所创建的窗口发送消息.许多标准控件默认为一个非常难看的向后兼容字体,直到你给它们一个新的.在大多数情况下,您可以使用GetStockObject(DEFAULT_GUI_FONT)(或者GetStockFont()如果包含windowsx.h)作为发送它们的字体.如果您使用股票字体,那么您不必跟踪它是否存在并在以后释放它.
您还需要为大多数控件设置WS_EX_CLIENTEDGE或WS_EX_STATICEDGE样式以获得较新的显示行为.我认为这通常是WS_EX_STATICEDGE在主题被打开时以及WS_EX_CLIENTEDGE何时不是.但是你需要玩这些.使用Spy ++查看各种控件并查看它们使用的样式并确保匹配它们.关闭这些样式会产生禁用主题绘制的副作用.
请注意,这些是_EX_样式标志,因此您需要使用CreateWindowEx而不是CreateWindow
可能还有其他的东西,但试试这个,看看你需要多远.
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |