设为首页 加入收藏

TOP

VC++中的Progress控件如何使用(一)
2014-11-23 20:10:54 来源: 作者: 【 】 浏览:53
Tags:Progress 控件 如何 使用

Progress控件能让人们感受到一个应用程序执行的进度,在很多应用程序中都能用到它,但通常只支持在单任务中,在Windows98/NT中文操作系统下,在VC++6.0环境下,利用线程编制了一个非常小巧的应用程序来实现Progress控件的使用。它可以支持多线程,使用起来很方便。

以下是这个应用程序的源代码:

         
          //ProgressDialog.h



class CProgressDialog : public CDialog



{



// Construction



public:



CProgressDialog(LPCSTR caption, BOOL



enableCancel=TRUE, CWnd* pParent = NULL);



// standard constructor



virtual ~CProgressDialog(void);



// Dialog Data



//{{AFX_DATA(CProgressDialog)



enum { IDD = IDD_PROGRESS_DIALOG };



CStatic



m_MessageStatic; //进程条标题



CButton m_CancelButton; //中止按钮控键



CProgressCtrl



m_ProgressCtrl;



//}}AFX_DATA



CString m_Caption;



  //对话框标题



BOOL m_EnableCancel; //中止按钮显示开关



BOOL m_IsCancel; //中止按钮是否按下开关



HANDLE m_Thread;



  //线程句柄



static DWORD WINAPI ThreadProc(CProgressDialog* dlg); //静态线程



void SetProgress(int percent) //设置进程位置



{ m_ProgressCtrl.SetPos(percent);}



void SetMessage(LPCSTR msg) //设置进程条标题



{ m_MessageStatic.SetWindowText(msg);}



BOOL IsCancel(void)



{ return m_IsCancel;}



virtual DWORD ProgressProc()=0;//线程过程纯虚函数



// Overrides



// ClassWizard generated virtual function overrides



//{{AFX_VIRTUAL(CProgressDialog)



protected:



virtual void DoDataExchange(CDataExchange* pDX);



 // DDX/DDV support



//}}AFX_VIRTUAL



// Implementation



protected:



// Generated message map functions



//{{AFX_MSG(CProgressDialog)



virtual BOOL OnInitDialog();



virtual void OnCancel();



virtual void OnOK();



//}}AFX_MSG



DECLARE_MESSAGE_MAP()



};



class CMyProgressDialog:public CProgressDialog {



public:



CMyProgressDialog(LPCSTR caption):CProgressDialog(caption) {}



virtual DWORD ProgressProc(); //继承过程



};



// ProgressDialog.cpp



#include "stdafx.h"



#include "ProgressTest.h"



#include "ProgressDialog.h"



#ifdef _DEBUG



#define new DEBUG_NEW



#undef THIS_FILE



static char THIS_FILE[] = __FILE__;



#endif



CProgressDialog::CProgressDialog(LPCSTR caption, BOOL enableCancel, CWnd* pParent /*=NULL*/) :



CDialog(CProgressDialog::IDD, pParent)



{



//{{AFX_DATA_INIT(CProgressDialog)



m_Caption=caption;



m_EnableCancel=enableCancel;



m_IsCancel=FALSE;



m_Thread=NULL;



//}}AFX_DATA_INIT



}



CProgressDialog::~CProgressDialog(void)



{



if (m_Thread) {



CloseHandle(m_Thread);



}}



void



CProgressDialog::DoDataExchange(CDataExchange* pDX)



{CDialog::DoDataExchange(pDX);



//{{AFX_DATA_MAP(CProgressDialog)



DDX_Control (pDX 
          IDC_MESSAGE_STATIC, m_MessageStatic);



DDX_Control(pDX, IDCANCEL, m_CancelButton);



DDX_Control(pDX, IDC_PROGRESS, m_ProgressCtrl);



//}}AFX_DATA_MAP



}



BEGIN_MESSAGE_MAP(CProgressDialog, CDialog)



//{{AFX_MSG_MAP(CProgressDialog)



//}}AFX_MSG_MAP



END_MESSAG
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Visual C++中回调函数使用的变身.. 下一篇应用实例:VC++实现广告窗口自动..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: