我的GUI中有我喜欢的彩色进度条:
但是,我希望在Windows 7上使用GUI时看起来是Windows 7,所以我添加了这个pragma
#pragma comment( linker, "/manifestdependency:\"type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' \
language='*'\"")
但是这导致了我不喜欢的单色(绿色),动画发光工具栏:
所以我输入了以下内容删除了样式:
SetWindowTheme(hProgress, L" ", L" ");
结果还不错:
但是,请注意虽然依赖于相同的资源文件,但进度条周围没有边框。 如何在保留窗口其余部分的Windows 7外观的同时将进度条设置为原始外观?
答案 0 :(得分:3)
启用视觉样式时,标准的Win32 ProgressBar不支持自定义着色,而是从当前主题中获取颜色。这就是你的ProgressBars变绿的原因。但是,您可以使用PBM_SETSTATE
消息将ProgressBar的状态设置为PBST_NORMAL
(绿色),PBST_ERROR
(红色)或PBST_PAUSED
(黄色)。
除此之外,要显示带有自定义颜色的主题ProgressBar,您必须直接使用DrawThemeBackground()
自定义绘制自定义控件,并根据需要绘制"PROGRESS"
类的various components。通过将iStateId
参数设置为PBFS_ERROR
,PBFS_NORMAL
,PBFS_PARTIAL
或PBFS_PAUSED
,可以绘制标准的红色,绿色,青色和黄色)绘制PP_FILL
部分时(彩色条显示当前进度)。但是,如果你需要任何其他颜色,它会变得有点棘手。以下文章显示了使用渐变颜色混合绘制标准主题ProgressBar的示例:
演示的技术首先使用PBFS_NORMAL
(绿色)状态绘制标准ProgressBar,然后使用HSL饱和度和强度变换来改变PP_FILL
像素的颜色值,使其成为所需的颜色
答案 1 :(得分:0)
使用以下清单更改进度条的样式:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="Win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
和此资源:
1 24"manifestname.manifest"
答案 2 :(得分:0)
我遇到了完全相同的问题,但没有设法启用边界。 但是通过更改条形的背景看起来没问题:
SendMessage(hwndPBAR, PBM_SETBKCOLOR, 0, 0x00DCDCDC); //grey