|
감이 잡혔다고 말씀드리고 싶지만 아직도 헷갈리고 잘 모르겠는...제 심정 이해해주셔으면~~ ㅠㅠ 합니다.
ResigterWindowMessage로 처음에 등록하는건 제가 define한 예를 들어
#define WM_MYMESSAGE WM_APP+1
이라면
uMsg=ResisterWindowMessage("WM_MYMESSAGE"); <--FormCreate안에
WndProc은 메인에 있거든요.
void __fastcall TFormMain::WndProc(Messages::TMessage &Message)
{
if(Message.Msg==uMsg)
switch (Message.Msg) {
case WM_APP+1:
ShowMessage("WM_APP+1");
break;
case WM_USR_MSG:
ShowMessage("USR MSG");
break;
}
TForm::WndProc(Message);
}
걍 지금 이 메세지를 받아 오는지 안오는지라도 알려구 이렇게 했는데...
역시나 아무런 반응도 보이지 않네요.
질문 1) WndProc이라는게 저렇게 메인에 하나만 넣는것이 맞나요? 아니면 그 메세지를 발생시키는 모든 폼에 넣어줘야 하나요?
질문 2) 메세지를 발생시킨다고 해야하나? 그건 WndProc을 쓸때도 PostMessage를 사용해야 하나요?
if(ret == ST_COMPLETE){
PostMessage(gForm[rp]->Handle, WM_MYMESSAGE, rp, gId[rp]);
} else {
PostMessage(gForm[rp]->Handle, WM_MYMESSAGE, rp, (-1) * gId[rp]);
rp = tp; //エラーが発生した場合、以降のメッセージを破棄(継続中エラーの場合が心配)
}
현재 포스트메세지를 써준 부분이 이곳인데요... 이건 변화없이 사용해줘야 하나요?
아니라면 저부분은 어떻게 해야하나요? 일단 WM_MYMESSAGE라는 놈이 발생은 되어야 잡오던 어쩌든 할것 같은데 도~~~~~통 몰겠네요
질문 3) RegisterWindowMessage가 중복되는 선언을 막기위해 사용되는건가요?
--------------------------------------------------------------------------------------
#define WM_USR_MSG "Test"
int MSG1 = RegisterWindowMessage(WM_USR_MSG);
int MSG2 = RegisterWindowMessage(WM_USR_MSG);
위와 같이 사용하였을경우 성공했으면 xC000 through 0xFFFF 값을 리턴하고 실패했을경우 0을 리턴합니다.
--------------------------------------------------------------------------------------
밑에 검색해서 본 설명에 보면
이렇게 나와있는데요 이렇게 쓴 메세지를 위에 제가 쓴 WndProc에서처럼 case문에 WM_USR_MSG를 쓰면
에러가 나네요. 무엇이 잘못된건가요?
|