QQ登录

只需一步,快速开始

上位机MFC实现进度条弹出显示

[ 复制链接 ]
在我们使用很多软件时,比如在文件复制时,都会弹出窗口显示具体的进度。
在很多情况下,都需要弹出一个窗口,用于显示当前操作的进展情况,并允许用户取消操作。

当前 这个例程也显示进度条弹出显示功能 。
效果如下图

上位机MFC实现进度条弹出显示

上位机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...");     


下载地址:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:PROGRESS_WND_DEMO.rar 
文件大小:36.36 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我





回复

使用道具 举报

快速回复 返回列表 客服中心 搜索