1
저는 사내 서비스 스트레스 테스트를 위해 멀티 스레드 WTL 유틸리티를 작성했습니다.WTL을 사용하여 사용자 정의 메시지를 올바르게 처리하기
Comms 스레드가 종료 한 주 스레드로 신호를 보내면 주 스레드가 해당 개체를 삭제할 수 있습니다.
그들은도록 신호를합니다
PostThreadMessage(m_dwParentThreadId, WM_THREADQUIT, 1, m_dwNetThreadId);
내 문제는 내가 정의한 사용자 지정 메시지를 처리하는 방법입니다.
WM_THREADQUIT is #define'd as WM_USER + 10
나는
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_THREADQUIT, OnThreadQuit)
...
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
그러나, OnThreadQuit가 호출되지 않습니다 :, 예컨대을 핸들러를 호출하는 메시지 맵에 항목을 사용하고 싶었다.
나 '...이 그것을 할 올바른 방법이 아니다 확신
virtual BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_THREADQUIT)
{
BOOL blHandled;
OnThreadQuit(pMsg->message, pMsg->wParam, pMsg->lParam, blHandled);
return TRUE;
}
return CWindow::IsDialogMessage(pMsg);
}
을 : 나는 그것을 처리 할 수
있는 유일한 방법은를 PreTranslateMessage에서 명시 적으로 핸들러를 호출하는 것입니다 d는 올바른 길을 알고 싶어 - 누군가 도와 줄 수 있니?