MFC控件編程進度條編寫


                  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);
}

 

 

 

應用程序截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM