메세지 맵은
Dispatch 함수를 override 하는 메크로 입니다.
참조
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=43
메세지 맵 선언할때 END_MESSAGE_MAP() 괄호 안에
상위 Dispatch 할 class-name을 명시해줘야 하는데...
님께서는 빠뜨렸네요
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_WOM_DONE,TMessage, OnMM_WOM_DONE)
END_MESSAGE_MAP()
그런데 문제는 VCL의 TThread를 상속받은 쓰레드는
메세지 펌프 로직이 기본적으로 들어있지 않기 때문에
메세지 맵을 만들어도 소용없습니다.
왜냐하면 TThread에서는 메세지를 메세지큐에서 메세지를 가져오는 메세지 펌프 로직이 들어있지 않기 때문이죠
메세지 맵이 제대로 동작하려면
다음과 같은 메세지 펌프 루프를 코딩해줘야 할뿐 아니라
(GetMesage or PeekMessage -> TranslateMessage -> DispatchMessage)
또 반복적으로 호출해줘야 하구요
그럼..
도대체 님이 쓰신 글 :
: BEGIN_MESSAGE_MAP
: MESSAGE_HANDLER(MM_WOM_DONE,TMessage, OnMM_WOM_DONE)
: END_MESSAGE_MAP()
:
: 이렇게 해니 컴파일이 안되네요..
:
: Thread에서 메세지맵을 어떻게 선언해야 되나요?
|