.h
#define IDM_MYCLOSEPRESS 45571
LRESULT OnMyClose(WPARAM wParam, LPARAM lParam);
.cpp
BEGIN_MESSAGE_MAP(CProgress, CDialog)
//ON_WM_CLOSE()
ON_MESSAGE(IDM_MYCLOSEPRESS,OnMyClose)
END_MESSAGE_MAP()
LRESULT CProgress::OnMyClose(WPARAM wParam, LPARAM lParam)
{
CDialog::OnOK();
return 0;
}
定时器调用
SetTimer(1, 100, NULL);
void CXXXX::OnTimer(UINT_PTR nIDEvent)
{
KillTimer(1);
DoSomeThing();
CDialog::OnTimer(nIDEvent);
}
.h
afx_msg void OnTimer(UINT_PTR nIDEvent);
CXXXX* pDetaiDlg = GetPDDlg();
if(pDetaiDlg)
{
pDetaiDlg->m_bCancelMsgSet =TRUE;
DWORD dwThreadID ;
::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )WaitForReturn,(LPVOID)pDetaiDlg,0,&dwThreadID);
}
UINT WaitForReturn(LPVOID lpParam)
{
CXXXX *pWndProcess = (CXXXX *)lpParam;
HWND hWnd = pWndProcess->GetParent()->GetSafeHwnd();
MSG msg;
while (hWnd)
{
if(PeekMessage(&msg,hWnd , 0, 0xFFFF,PM_REMOVE))
//if(GetMessage(&msg, NULL, WM_KEYDOWN, WM_KEYDOWN))
{
if ( (msg.message == WM_KEYDOWN) && (msg.wParam == VK_RETURN))
{
pWndProcess->CancelProcessBar();
break;
}
TranslateMessage(&msg);
(void)DispatchMessage(&msg);
}
}
return 0;
}
#define IDM_MYCLOSEPRESS 45571
LRESULT OnMyClose(WPARAM wParam, LPARAM lParam);
.cpp
BEGIN_MESSAGE_MAP(CProgress, CDialog)
//ON_WM_CLOSE()
ON_MESSAGE(IDM_MYCLOSEPRESS,OnMyClose)
END_MESSAGE_MAP()
LRESULT CProgress::OnMyClose(WPARAM wParam, LPARAM lParam)
{
CDialog::OnOK();
return 0;
}
定时器调用
SetTimer(1, 100, NULL);
void CXXXX::OnTimer(UINT_PTR nIDEvent)
{
KillTimer(1);
DoSomeThing();
CDialog::OnTimer(nIDEvent);
}
.h
afx_msg void OnTimer(UINT_PTR nIDEvent);
CXXXX* pDetaiDlg = GetPDDlg();
if(pDetaiDlg)
{
pDetaiDlg->m_bCancelMsgSet =TRUE;
DWORD dwThreadID ;
::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )WaitForReturn,(LPVOID)pDetaiDlg,0,&dwThreadID);
}
UINT WaitForReturn(LPVOID lpParam)
{
CXXXX *pWndProcess = (CXXXX *)lpParam;
HWND hWnd = pWndProcess->GetParent()->GetSafeHwnd();
MSG msg;
while (hWnd)
{
if(PeekMessage(&msg,hWnd , 0, 0xFFFF,PM_REMOVE))
//if(GetMessage(&msg, NULL, WM_KEYDOWN, WM_KEYDOWN))
{
if ( (msg.message == WM_KEYDOWN) && (msg.wParam == VK_RETURN))
{
pWndProcess->CancelProcessBar();
break;
}
TranslateMessage(&msg);
(void)DispatchMessage(&msg);
}
}
return 0;
}