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();
}
만일 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();
}
'KB > MFC/Win32' 카테고리의 다른 글
STUDY #4 : HDC (0) | 2004.03.19 |
---|---|
STUDY #3 : Icon & Cursor by USER & TIMER (0) | 2004.03.19 |
STUDY #2 : Basic Message & Window treatment in WNDPROC (0) | 2004.03.19 |
STUDY #1 : Basic structure Code in Windows's API (0) | 2004.03.19 |
프로세스와 멀티 스레드 프로그래밍 (0) | 2004.03.19 |