MFC控件編程進度條編寫
一丶進度條編程需要用到的方法
進度條MFC已經幫我們封裝好類了. 叫做 CProgressCtrl 進度條編程也很簡單.
封裝的方法也就那個那幾個.
GetPos() 獲取進度條位置
SetPos() 設置位置.
GetRange(Value,Value) 獲取進度條的最大跟最小的值.
等等.具體可以查詢MSDN
在講解之前.需要簡單講解下定時器以及按鈕.
定時器:
SetTimer() 設置定時器. 對話框相應 WM_TIMER消息即可.
KillTimer() 取消定時器的設置.
EnableWindow(TRUE or FALSE) 使控件可點擊根不可點擊.
二丶MFC中進度條的控件編程.
對於MFC控件編程.我們綁定一個變量. 初始化的時候設置最大跟最小值.
例如:
m_Pro.SetRange(0,100) 范圍0 - 100
按鈕點擊設置定時器. 此時對話框會接受WM_TIMER消息.我們響應消息.在里面控制進度條的進度.
1.按鈕點擊下的代碼.
void CSpainDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知處理程序代碼 SetTimer(1, 100,NULL); //設置100毫秒一次.ID為1 GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);// 當按鈕點擊完成之后.變為禁止狀態. }
2.對話框初始化下的代碼.初始化我們的進度條. 為它設置最大跟最小范圍.
m_pro.SetRange(0, 100);// 0 - 100
3.對話框實現的WM_TIMER消息.當我們按鈕設置了定時器.則這個消息回來.沒100毫秒一次.
代碼實現
void CSpainDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息處理程序代碼和/或調用默認值 int nPos, nMin, nMax; m_pro.GetRange(nMin, nMax);//參數是引用類型.所以直接傳入變量即可. 最大范圍最小返回都會放到這兩個變量中. nPos = m_pro.GetPos(); //獲取當前進度條位置 if (nPos >= nMax) //當前位置 > 100.也就是進度條的位置. { KillTimer(1); //結束定時器. nPos = 0; GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);//顯示為可以點擊 } nPos += 1; //每次進度條位置 + 1 m_pro.SetPos(nPos); //設置進度條的位置 CDialogEx::OnTimer(nIDEvent); }
應用程序截圖: