如何解決C 設(shè)置進(jìn)度條顏色不生效的問(wèn)題
今天有網(wǎng)友問(wèn)我C 設(shè)置進(jìn)度條顏色不生效的問(wèn)題,小編在網(wǎng)上查了些資料,再根據(jù)個(gè)人的經(jīng)驗(yàn)總結(jié)。希望能幫助到大家。 Visual C 中的進(jìn)度條功能實(shí)現(xiàn)原理和方法 讀者朋友們可能天天使用Visual
今天有網(wǎng)友問(wèn)我C 設(shè)置進(jìn)度條顏色不生效的問(wèn)題,小編在網(wǎng)上查了些資料,再根據(jù)個(gè)人的經(jīng)驗(yàn)總結(jié)。希望能幫助到大家。
Visual C 中的進(jìn)度條功能實(shí)現(xiàn)原理和方法
讀者朋友們可能天天使用Visual C 這個(gè)強(qiáng)大的工具來(lái)開發(fā)應(yīng)用程序。在每次加載一個(gè)項(xiàng)目時(shí),為了使項(xiàng)目加載過(guò)程不太單調(diào),Visual C 會(huì)在狀態(tài)欄的左半部分出現(xiàn)一個(gè)裝載進(jìn)度條,用來(lái)即時(shí)顯示項(xiàng)目的加載進(jìn)度。當(dāng)項(xiàng)目加載完畢后,進(jìn)度條會(huì)隱藏起來(lái)。那么這個(gè)功能是如何實(shí)現(xiàn)的呢?
雖然Visual C 中的MFC類提供了標(biāo)準(zhǔn)的進(jìn)度指示器控件,但我們不能直接在狀態(tài)欄中使用這個(gè)控件。為了解決這個(gè)問(wèn)題,可以創(chuàng)建一個(gè)可重用的CProgStatusBar類,這個(gè)類從CStatusBar派生,用來(lái)實(shí)現(xiàn)狀態(tài)欄中的進(jìn)度指示。整個(gè)實(shí)現(xiàn)過(guò)程并不復(fù)雜,思路是在狀態(tài)欄創(chuàng)建一個(gè)進(jìn)度指示器控件,將其作為子窗口來(lái)對(duì)待,然后根據(jù)不同狀態(tài)來(lái)顯示或隱藏進(jìn)度指示器。
在具體實(shí)現(xiàn)CProgStatusBar類的過(guò)程中,首先在CProgStatusBar派生類中添加一個(gè)CProgressCtrl類型的數(shù)據(jù)成員m_wndProgBar,然后重載CStatusBar類的兩個(gè)重要成員函數(shù):OnCreate()和OnSize(),最后還要在該類中添加一個(gè)自定義成員函數(shù)OnProgress()。在上述三個(gè)函數(shù)中,OnCreate()負(fù)責(zé)在狀態(tài)欄第一次被創(chuàng)建時(shí)接收控制,并創(chuàng)建進(jìn)度指示器并將它初始化為一個(gè)子窗口。
注意在創(chuàng)建進(jìn)度指示器控件時(shí)沒(méi)有使用WS_VISIBLE,因?yàn)槲覀円獙?shí)現(xiàn)的目標(biāo)是僅在裝載文件時(shí)進(jìn)度條才顯示,其余時(shí)間應(yīng)用程序都隱藏它。此外,我們還需要處理父窗口大小改變時(shí)子窗口的尺寸跟隨改變的問(wèn)題。通常情況下,這個(gè)工作由父窗口的WM_SIZE消息處理函數(shù)OnSize()來(lái)完成。
范例程序演示進(jìn)度條的使用
本文提供了一個(gè)范例程序prgsbar,它演示了在編輯視圖中顯示文本文件的加載過(guò)程,在界面的狀態(tài)欄中的進(jìn)度指示器模擬顯示文件的加載進(jìn)度。當(dāng)文本加載完畢后,進(jìn)度條會(huì)隱藏起來(lái)。由于該程序無(wú)法進(jìn)行拷屏操作,所以這里沒(méi)有給出狀態(tài)欄中顯示進(jìn)度條的界面效果圖,讀者可以運(yùn)行本書所帶光盤中的程序代碼觀看相應(yīng)的效果。