在我们使用很多软件时,比如在文件复制时,都会弹出窗口显示具体的进度。
在很多情况下,都需要弹出一个窗口,用于显示当前操作的进展情况,并允许用户取消操作。
当前 这个例程也显示进度条弹出显示功能 。
效果如下图
上位机MFC实现进度条弹出显示
点击菜单栏的不同按钮时,
弹出不同类型进度条。
当前例程一个从CWnd派生的类CProgressWnd,对应两文件为PROGRESSWND.CPP。PROGRESSWND.H.
其包含一个进度控件、取消按钮和消息消息的文本区域。
文本可以显示长达四行。
构造函数
CProgressWnd();
CProgressWnd(CWnd* pParent, LPCTSTR strTitle, BOOL bSmooth=FALSE);
BOOL Create(CWnd* pParent, LPCTSTR strTitle, BOOL bSmooth=FALSE);
构造函数可以是一步创建(用CProgressWnd),也可以是两步创建(用Create)。
成员函数
BOOL GoModal(LPCTSTR strTitle = _T("Progress"), BOOL bSmooth=FALSE); // Make window modal
int SetPos(int nPos); // Same as CProgressCtrl
int OffsetPos(int nPos); // Same as CProgressCtrl
int SetStep(int nStep); // Same as CProgressCtrl
int StepIt(); // Same as CProgressCtrl
void SetRange(int nLower, int nUpper, int nStep = 1);
// Set min, max and step size
void Hide(); // Hide the window
void Show(); // Show the window
void Clear(); // Clear the text and reset the progress bar
void SetText(LPCTSTR fmt, ...); // Set the text in the text area
BOOL Cancelled() // Has the cancel button been pressed?
void SetWindowSize(int nNumTextLines, int nWindowWidth = 390);
// Sets the size of the window according to
// the number of text lines specifed and the
// desired window size in pixels.
void PeekAndPump(BOOL bCancelOnESCkey = TRUE);
// Message pumping, with options of allowing
// Cancel on ESC key.
使用该类方法可以如下:
CProgressWnd wndProgress(this, "Progress");
// wndProgress.GoModal(); // Call this if you want a modal window
wndProgress.SetRange(0,5000);
wndProgress.SetText("Processing...");
for (int i = 0; i <5000; i++) { wndProgress.StepIt(); wndProgress.PeekAndPump(); if (wndProgress.Cancelled()) { MessageBox("Progress Cancelled"); break; } }
或者是下面的两步创建法:
CProgressWnd wndProgress;
if (!wndProgress.Create(this, "Progress"))
return;
wndProgress.SetRange(0,5000);
wndProgress.SetText("Processing...");
下载地址:
|