메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C/C++/MFC

VC7.1 MFC Thread 사용시 UpdateData 사용하기

2008.12.31 17:35

WhiteAT 조회 수:22728

Thread 내에서 UpdateData 를 호출하거나
UpdateData()함수가 있는 함수를 호출하면

Debug Assertion Falied 라는 에러가 발생한다.

이는 DEBUG 모드일때만 발생하는 것이기 때문에
RELEASE 모드로 컴파일 할때는 나타나지 않는다.

해결방법
MESSAGE 를 사용하면 해결할수 있다.
1. 사용자 메세지 작성
      #define UM_UPDATEDATA (WM_USER+1)

2.  UpdateData 처리할 함수 작성 (LRESULT 형을 반환해야 한다.)
    LRESULT OnUpdateDataFalse(WPARAM wParam, LPARAM lParam);
    LRESULT CDTES1_BASEDlg::OnUpdateDataFalse(WPARAM wParam, LPARAM lParam)
     {
      UpdateData(FALSE);
      return 0;
      }

3. MESSAGE_MAP 연결
    BEGIN_MESSAGE_MAP(CDTES1_BASEDlg, CDTESDialog)
        ON_MESSAGE(UM_UPDATEDATA,OnUpdateDataFalse)
    END_MESSAGE_MAP()

4. UpdateData를 수행할 쓰레드 에서 메세지 보내기 추가
        pParent->PostMessage(UM_UPDATEDATA);
        pParent 는 UpdateData가 있는 클래스의 포인터이다.(즉 메인 윈도우)

끝.
관련 문서가 검색되었습니다.
  1. [2012/11/13] ZEO 모듈이란? by WhiteAT (6394)
  2. [2010/12/29] 03_VC6.0 테트리스 만들기 - 벽돌(Shape)만들기 by WhiteAT (27847) *2
  3. [2010/10/08] 클래스 내에서의 쓰레드 by WhiteAT (15588)
  4. [2010/08/25] 클래스를 배열로 묶어 사용하기 by WhiteAT (19868)
  5. [2010/01/30] BUTTON 버튼색 변경하기 by WhiteAT (37690)
  6. [2010/01/23] 기본적인 Button 사용하기 by WhiteAT (13574)
  7. [2009/06/14] OnKeyDown 에서 Ctrl, Shift, Alt 눌러졌는지 확인하는 방법 by WhiteAT (24221)
  8. [2009/02/03] WM_DEVICECHANGE in MFC by WhiteAT (17873)
  9. [2008/12/25] MFC 메모리 누수 감지 by WhiteAT (23502)
  10. [2008/07/15] vc 소스 CWATTabCtrl01 - Tab Control 간단히 사용하기 by WhiteAT ()