WaitDlg.cpp
上传用户:pengminm
上传日期:2007-01-01
资源大小:30k
文件大小:2k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // WaitDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "WaitDialog.h"
  5. #include "WaitDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // cWaitDlg dialog
  13. cWaitDlg::cWaitDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(cWaitDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(cWaitDlg)
  17. // NOTE: the ClassWizard will add member initialization here
  18. //}}AFX_DATA_INIT
  19.    m_Text = "";
  20.    m_bShowCancelButton = false;
  21. }
  22. void cWaitDlg::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CDialog::DoDataExchange(pDX);
  25. //{{AFX_DATA_MAP(cWaitDlg)
  26. // NOTE: the ClassWizard will add DDX and DDV calls here
  27. //}}AFX_DATA_MAP
  28. }
  29. BEGIN_MESSAGE_MAP(cWaitDlg, CDialog)
  30. //{{AFX_MSG_MAP(cWaitDlg)
  31. ON_WM_TIMER()
  32. //}}AFX_MSG_MAP
  33. END_MESSAGE_MAP()
  34. /////////////////////////////////////////////////////////////////////////////
  35. // cWaitDlg message handlers
  36. void cWaitDlg::OnCancel() 
  37. {
  38.    //Override this so the user cannot cancel by hiting ESC
  39.    return;
  40. }
  41. void cWaitDlg::OnOK() 
  42. {
  43.    //Ignore this unless the button is visible
  44.    if (m_bShowCancelButton)
  45.       {
  46.    m_Thread->m_Event->SetEvent();
  47.    CDialog::OnOK();
  48.       }
  49. }
  50. BOOL cWaitDlg::OnInitDialog() 
  51. {
  52. CDialog::OnInitDialog();
  53.    if (m_Text.GetLength() > 0)
  54.       GetDlgItem(IDC_BUSY_TEXT)->SetWindowText(m_Text);
  55.    GetDlgItem(IDOK)->ShowWindow(m_bShowCancelButton ? SW_SHOW : SW_HIDE);
  56.    CRect rect;
  57.    GetDlgItem(IDC_BUSY_PIC)->GetWindowRect(rect);
  58.    ScreenToClient(&rect);
  59.    m_Anim.Create(WS_VISIBLE|WS_CHILD, rect, this, IDC_BUSY_PIC);
  60.    m_Anim.SetImageList(IDB_CALC_ANIM2, 70, 56, RGB(255,0,255));
  61.    m_Anim.StartAnim(250);
  62. SetTimer(1,500,NULL);
  63. return TRUE;  // return TRUE unless you set the focus to a control
  64.               // EXCEPTION: OCX Property Pages should return FALSE
  65. }
  66. void cWaitDlg::OnTimer(UINT nIDEvent) 
  67. {
  68. CSingleLock lock(m_Thread->m_Event, FALSE);
  69.    if (lock.Lock(0))
  70.       {
  71.       CDialog::OnOK();
  72.       }
  73. //CDialog::OnTimer(nIDEvent);
  74. }