程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 在狀態行中顯示進度條

在狀態行中顯示進度條

編輯:關於C語言

 

 

這段代碼可以在狀態行中的任意地方建立一個進度條

 

1.從View菜單中選擇Resource Symbols,加入一個新的ID(在本例中假設為

 ID_INDICATOR_PROGRESS_PANE),讓計算機為該ID賦值也許是較好的選擇.

 

2. 在MainFrm.cpp中尋找indicators數組,然後在該數組中加入上面新增加的ID,

 請將它放在其它ID的後面,這將使以後的進度條出現在狀態行的最右邊,如果你

不想 讓進度條出現在最右邊,你也可以將ID放置在其它你想出現的地方.

 

3. 打開資源文件中的字符串表,然後插入一個新字符串.你可以通過Insert菜單

 來加入一個新字符表,或者在字符串表上單擊右鍵也可以完成該工作.

 

4. 該字符串的字符為新增的ID,後面的消息,請加入適當的空格.(加入的空格

 至少要比建立的進度條要大)

 

現在我們已經建立了一個空的長方形,接下來我們要在這裡面放入一個進度條.

 

1. 在MainFrm.h中聲明一個公共變量,類型為CProgressCtrl(假設為m_progress)

 

2. 在MainFrm.h中聲明一個保護變量,類型為BOOL(假設為m_bCreated)

 

3. 在MainFrm.cpp的OnCreate()函數中,將m_bCreated初始化為FALSE:

 

    m_bCreated = FALSE;

 

4. 現在當我們需要使用進度條時,我們先檢查一下是否已經建立,如果還沒有,

那麼 我們需要建立一個:

 

CMainFrame::OnSomeLongProcess()

{

    RECT MyRect;

    // substitute 4 with the zero-based index of your status bar pane.

    // For example, if you put your pane first in the indicators array,

    // you抎 put 0, second you抎 put 1, etc.

    m_wndStatusBar.GetItemRect(4, &MyRect); 

 

    if (m_bCreated == FALSE)

    {

        //Create the progress control

        m_Progress.Create(WS_VISIBLE|WS_CHILD, MyRect, &wndStatusBar, 1);

 

        m_Progress.SetRange(0,100); //Set the range to between 0 and 100

        m_Progress.SetStep(1); // Set the step amount

        m_bCreated = TRUE;

    }

 

    // Now we抣l simulate a long process:

    for (int I = 0; I <100; I++) { Sleep(20); m_Progress.StepIt(); } }

如果窗口在建立進度條之後,改變了大小,那麼進度條並不會被重新調整位置,所

以 我們必須在WM_SIZE事件中加入自己的代碼來調整該進度條的位置:

 

void CMainFrame::OnSize(UINT nType, int cx, int cy)

{

    CMDIFrameWnd::OnSize(nType, cx, cy);

    RECT rc;

    m_wndStatusBar.GetItemRect(4, &rc);

 

    // Reposition the progress control correctly!

    m_Progress.SetWindowPos(&wndTop, rc.left, rc.top, rc.right - rc.left,

        rc.bottom - rc.top, 0);

       

}

 

這就是狀態行中實現進度條的方法,雖然看上去很長,但事實上它非常簡單.

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved