进度条控件CProgressCtrl实现进度滚动效果

Posted 一点一滴成长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进度条控件CProgressCtrl实现进度滚动效果相关的知识,希望对你有一定的参考价值。

关于CProgressCtrl 控件的基本操作网上有很多资料,可我想实现进度条中进度滚动效果,即很多时候程序出现的等待或启动画面,如下图:

 

实现这个效果的函数为SetMarquee(_In_ BOOL fMarqueeMode, _In_ int nInterval),第一个参数为开关,第二个参数指定滚动时间。且控件应该包含
PBS_MARQUEE风格,eg:
m_ProgressCtl.Create(WS_CHILD|WS_VISIBLE|PBS_MARQUEE,CRect(100,200,250,230),this,11);
m_ProgressCtl.SetMarquee(TRUE, 30);

如果在win32下使用带PBS_MARQUEE风格的Progress Bar进度条控件的话还需要指定程序使用的ComCtl32库的版本必须为6.0或以上,因为这个控件库会随
着Internet Explorer发布,所以当前活动的ComCtl32版本很可能与操作系统的版本不一样,所以我们应该手动指定程序使用的ComCtl32版本:

#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\\"type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' processorArchitecture=\'x86\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\'\\"")
#elif defined _M_IA64
#pragma comment(linker, "/manifestdependency:\\"type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' processorArchitecture=\'ia64\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\'\\"")
#elif defined _M_X64
#pragma comment(linker, "/manifestdependency:\\"type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' processorArchitecture=\'amd64\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\'\\"")
#else
#pragma comment(linker, "/manifestdependency:\\"type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' processorArchitecture=\'*\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\'\\"")
#endif

我们在创建MFC项目的时候会看到有一个“Common control manifest”选项,如果我们去掉选择它的话会发现程序的一些控件都是一些老式风格,这其
实就是使用了低版本的ComCtl32库,所以在win32中,如果想要控件风格为新的系统风格那么应该指定使用的ComCtl32版本。

win32控件一览:https://msdn.microsoft.com/en-us/library/bb773169(v=vs.85).aspx

 

以上是关于进度条控件CProgressCtrl实现进度滚动效果的主要内容,如果未能解决你的问题,请参考以下文章

自绘CProgressCtrl进度条控件,支持自定义显示文本和进程百分比信息

猎豹MFC--进度条CProgressCtrl 定时器SetTimer

旋转按钮进度条滑块控件的使用

mfc CProgressCtrl

MFC进度条的美化

c语言api函数