關于CProgressCtrl 控件的基本操作網上有很多資料,可我想實現進度條中進度滾動效果,即很多時候程序出現的等待或啟動畫面,如下圖:
?
winform異步加載窗體?實現這個效果的函數為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
winform tabcontrol。?