设为首页 加入收藏

TOP

VC++中如何使用Progress控件(二)
2013-01-25 13:06:28 来源: 作者: 【 】 浏览:778
Tags:如何 使用 Progress 控件

 

  BEGIN_MESSAGE_MAP (CProgressDialog, CDialog)

  //{{AFX_MSG_MAP(CProgressDialog)

  //}} AFX_MSG_MAP

  END_MESSAGE_MAP()

  // CProgressDialog message handlersBOOL CProgressDialog::OnInitDialog()

  {

  CDialog::OnInitDialog();

  // TODO: Add extra initialization here

  m_ProgressCtrl.SetRange(0, 100);

  m_ProgressCtrl.SetPos(0);

  SetWindowText(m_Caption);

  if (! m_EnableCancel) {

  m_CancelButton.ShowWindow(SW_HIDE);

  }

  DWORD threadID;

  m_Thread=CreateThread(NULL, 0,

  (LPTHREAD_START_ROUTINE) CProgressDialog::Thread

  Proc,(LPVOID)this,0,&threadID);

  return TRUE; // return TRUE unless you set the focus to a control

  // EXCEPTION: OCX Property Pages should return

  FALSE

  }

  DWORD WINAPI

  CProgressDialog::ThreadProc(CProgressDialog* dlg)

  {DWORD ret=dlg- >ProgressProc();

  dlg->PostMessage(WM_COMMAND, IDOK);

  return ret;

  }

  void CProgressDialog::OnCancel()

  {

  // TODO: Add extra cleanup here

  if (m_EnableCancel) m_IsCancel=TRUE;

  }

  void CProgressDialog::OnOK()

  {

  // TODO: Add extra validation here

  WaitForSingleObject(m_Thread, INFINITE);

  CDialog::OnOK();

  }DWORD CMyProgressDialog::ProgressProc()

  {SetMessage("Progress...");

  for (int i=0;i<100;i++) {

  if (IsCancel()) break;

  Sleep(100);

  SetProgress(i);

  }

  return 0;

  }

  只需在应用Progress控 件的地方调用CMyProgressDialog类的对象即可。可根据不同的应用程序修改DWORD CMyProgressDialog::ProgressProc()这个继承函数的函数体来适应相应的程序。

      

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇vc双画布消除屏幕闪烁 下一篇C++和C不同是因为函数重载

评论

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