WorkerThread 내에서 UpdateData()와 같은 함수를 사용하고자 할때는 오류가 발생한다.
이럴때는 CWinThread를 상속받아 UserThread 내에서 사용하던가,
메세지를 등록하여 WorkerThread 내에서 처리 할 수 있는 방법이 있다.
SendMessage / PostMessage를 활용하여 WorkerThread내에서의 문제를 처리해 보자.
1. 메시지 정의
#define UM_UPDATE WM_USER
2. 메시지 맵 등록
BEGIN_MESSAGE_MAP(CPacketViewView, CFormView)
ON_MESSAGE( UM_UPDATE, OnUpdateData )
END_MESSAGE_MAP()
3. 메시지 처리 함수
LRESULT CPacketViewView::OnUpdateData( WPARAM wParam, LPARAM lParam)
{
UpdateData( true ) ;
return 0;
}
UNIT CTest::WorkerThread( LPVOID pParam )
{
// Thread 처리
.
.
.
// 메시지 처리
SendMessage( UM_UPDATE ) ;
.
.
}
위에서와 같은 방법으로 처리 할 수 있다.
'Programming > MFC' 카테고리의 다른 글
CDocument 클래스와 파일 처리 (0) | 2006.03.20 |
---|---|
데이터 형 및 변수명 관례 (0) | 2006.03.20 |
창의 크기를 고정시키거나 제한하는 방법 (0) | 2006.03.17 |
CFileDialog 파일 저장하기 (1) | 2006.03.09 |
CFileDialog::GetFileExt (0) | 2006.03.09 |