블로그 이미지
frostguy

카테고리

분류 전체보기 (48)
사진 (3)
Study (40)
IT (3)
Total141,177
Today0
Yesterday25
Thread 내부에서 UpdateData 를 호출하게 될 경우에는, 아래와 같은 ASSERT가 발생하게 된다.
이를 해결하기 위해서는 UpdateData 함수의 직접호출이 아닌, 사용자 메시지를 통해서 부르게 되면 이 ASSERT를 방지할 수 있다.

사용 방법은

우선 Dialog 의 헤더에 

#define UPDATE_MSG  WM_USER + 1

선언 해주고, 

함수 선언부에

afx_msg LRESULT OnReceivedMsgFromThread(WPARAM w, LPARAM l);

선언해준 뒤, 

Dialog 의 cpp 파일에

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_MESSAGE (UPDATE_MSG, OnReceivedMsgFromThread)
해주고

LRESULT CTestDlg::OnReceivedMsgFromThread( WPARAM w, LPARAM l )
{
UpdateData(FALSE);
return 0;
}

Thread 안에서는
UpdateData(FALSE);
//이것을
this->PostMessage(UPDATE_MSG, 0, 0);
//아래와 같이 고쳐준다




Posted by frostguy

최근에 달린 댓글

글 보관함