1998.9.28 조경민

만일 PreTranslateMessage() 코드안에서

메세지를 발생시키는 다이얼로그 같은것을 DoModal()할 경우 에러가 난다.

이럴때는 PostMessage()를 해 주는것이 좋다.

예)

XXXXXXX:PreTranslatemessageBox()
{
        if(pMsg->message==WM_KEYDOWN)
        switch(pMsg->wParam)
        {
                case 13:
                        CDialogXX aa;
                        aa.DoModal();   <-=- 여러 메세지 발생
                break;
        }                               <--- 메세지 쓰레드에서 에러
}

-> 이것은 이렇게 바꾼다.

#define IDC_MSG1    800

:

ON_COMMAND(IDC_MSG1,OnModal)
:

XXXXXXX:PreTranslatemessageBox()
{
        if(pMsg->message==WM_KEYDOWN)
        switch(pMsg->wParam)
        {
                case 13:
                        PostMessage(ON_COMMAND,IDC_MSG1);  // 메세지 포스팅
                break;
        }            
}



void XXXXXXXX::OnModal()
{
      CDialogXX aa;
      aa.DoModal();
}

+ Recent posts