빌더 2007에서 테스트 하였습니다.
다른 메세지(WM_RBUTTONUP, WM_MOUSEMOVE, WM_SIZE) 등은 잘 들어오는데,
WM_MOUSELEAVE 메세지는 들어오질 않습니다.
(GBox는 GroupBox이구요, Panel에서도 테스트해보았는데 증상은 동일합니다.)
제가 어떤 부분을 잘못 코딩해서 이런 증상이 나오는지 도움 부탁드립니다...
//-----------------------------------------
[헤더부분]
TWndMethod m_OrgProc;
void __fastcall NewProc(Messages::TMessage &Message);
bool __fastcall WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
//-----------------------------------------
//-----------------------------------------
[소스 부분]
1. 생성자 또는 시작부분)
m_OrgProc = GBox->WindowProc;
GBox->WindowProc = NewProc;
2. 함수 부분 )
void __fastcall TForm1::NewProc(Messages::TMessage &Message)
{
if(!WindowProc(Message.Msg, Message.WParam, Message.LParam))
{
m_OrgProc(Message);
}
}
bool __fastcall TForm1::WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_PAINT:
break;
case WM_SIZE:
break;
case WM_MOUSEWHEEL:
break;
case WM_RBUTTONDOWN:
break;
case WM_RBUTTONUP:
break;
case WM_MOUSELEAVE: //안들어온다.
ShowMessage("WM_MOUSELEAVE");
break;
case WM_MOUSEMOVE:
break;
default:
return FALSE;
break;
}
return TRUE;
}
//-----------------------------------------
|