MFC进度条控件CProgressCtrl实现进度滚动效果
关于CProgressCtrl 控件的基本操作⽹上有很多资料,可我想实现进度条中进度滚动效果,即很多时候程序出现的等待或启动画⾯,如下图:
在⽹上搜索半天发现了了这个⽅法:CProgressCtrl::SetMarquee(_In_ BOOL fMarqueeMode, _In_ int nInterval),第⼀个参数为开关,第⼆个参数指定滚动时
间。可实际运⾏时发现不管作⽤,后来才发现在如果要使⽤这种效果的话必须指定PBS_MARQUEE风格,可MSDN上关于SetMarquee()成员的描述根本没提这
个,只有在MSDN上win32的才发现了这个提⽰,看来以后得多看看win32控件说明了。
所以完全的代码应该是:m_ProgressCtl.Create(WS_CHILD|WS_VISIBLE|PBS_MARQUEE,CRect(100,200,250,230),this,11);
m_ProgressCtl.SetMarquee(TRUE, 30);
⽽如果使⽤win32的Progress Bar进度条控件PBS_MARQUEE风格的话还需要指定程序使⽤的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' public #elif defined _M_IA64
marquee marquee#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publi #elif defined _M_X64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' pu #else
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKe #endif
我们在创建MFC项⽬的时候会看到有⼀个“ Common control manifest”选项,如果我们去掉选择它的话会发现程序的⼀些控件都是⼀些⽼式
风格,这其实就是使⽤了低版本的ComCtl32库,所以在win32中,如果想要控件风格为新的系统风格那么应该指定使⽤的ComCtl32版
本。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。