This commit is contained in:
2013-07-20 23:23:06 +00:00
parent 654517e434
commit acbb9db57f

100
HookMsg/WaitDlg.cpp Normal file
View File

@@ -0,0 +1,100 @@
// WaitDlg.cpp : implementation file
//
#include "stdafx.h"
#include "hookmsg.h"
#include "WaitDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWaitDlg dialog
//UINT CWaitDlg::WaitThread(void * lParam); // 작업 스레드 함수
CWaitDlg::CWaitDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWaitDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWaitDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hWaitEvent = INVALID_HANDLE_VALUE;
}
void CWaitDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWaitDlg)
DDX_Control(pDX, IDC_WAIT_PROGRESS, m_hProgress);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWaitDlg, CDialog)
//{{AFX_MSG_MAP(CWaitDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWaitDlg message handlers
void CWaitDlg::OnOK()
{
// CDialog::OnOK();
}
void CWaitDlg::OnCancel()
{
int nID = MessageBox( "프로그램 강제종료하시겠습니까?\r\n"
"정상종료처리중에 문제가 있을때 강제종료하세요. \r\n" ,
"프로그램 종료", MB_YESNO|MB_ICONQUESTION );
if( nID == IDYES )
{
CDialog::OnCancel();
}
}
BOOL CWaitDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
AfxBeginThread(WaitThread, this);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
UINT CWaitDlg::WaitThread(void * lParam) // 작업 스레드 함수
{
int nResult = 0;
CWaitDlg* pDlg = (CWaitDlg*)lParam;
pDlg->m_hProgress.SetRange(0,100); // 유효 범위 설정
CString str;
int idx = 0;
for(int i = 0; i <= 100; i++)
{
pDlg->m_hProgress.SetPos(i); // 진행 위치 설정
// the thread is still running.
DWORD dwRet = ::WaitForSingleObject(pDlg->m_hWaitEvent,50);
if( dwRet == WAIT_OBJECT_0 || dwRet == WAIT_FAILED ) // 쓰레드 종료를 확인.
{
pDlg->PostMessage(WM_QUIT);
break;
}
if( i == 100 ) i = 0;
}
return 0;
}