|
안녕하세요 제라툴입니다.
요즘 계속 답변을 달지 않다가 오래간 만에 답변을 답니다.
우선 아래 질문에 대해서 보면
funcCallBack함수가 호출되면
::SendMessage(*AfxGetMainWnd(),WM_USER+1,0,(LPARAM)buf.c_str());
가 발생하는데.. WM_USER+1에 해당하는 메시지를 호출하게 되죠..
그럼 CallUpdateData(WPARAM, LPARAM);함수가 호출 되도록 메시지 핸들러가 처리하는거 같은데..
확실히 메시지 핸들러에 어떻게 처리 되어있는지 아래 만으로는 알구 없어서..
대강 제가 이렇게 추측했습니다.
우선 AfxGetMainWnd()함수는 MFC에서
Main Window의 Handle를 Direct하게 Return해주는 함수니까..
(이함수를 사용한 이유는 MFC메시지 핸들링 구조에 관해 찾아보세요...)
우리가 처리하고자 하는 윈도우의 Handle값을 넣어 주어야 겠죠..
흠.. 그리고 MFC에서 사용한 메시지 MAP을
빌더에서 사용하는 메시지맵으로 바꾸어 주셔야합니다.
다시말해 BEGIN_MESSAGE_MAP , END_MESSAGE_MAP, MESSAGE_HANDLER, VCL_MESSAGE_HANDLER
등을 사용해서 바꿔 주셔야 합니다.
그럼 즐거운 하루 되시길..
--- 제천대성 제라툴 ----
헐.. 이제 제천 대성으루 바꿨어영...
향기 님이 쓰신 글 :
: Named Pipe 통신을 해야 합니다. 인터넷에서 이곳저곳을 돌아다녔는데.. Named Pipe 클래스는 없더군요..
:
:
: 코드구루에서 VC++6.0 의 소스를 구해서 Porting 하는도중 call back 함수를 처리하는 데서 막혀서 진도를 못나갑니다.
:
:
: 헤더부
: static void WINAPI funcCallBack(string buf);
: afx_msg LRESULT CallUpdateData(WPARAM, LPARAM);
:
:
: 구현부
: void WINAPI CPipeTestDlg::funcCallBack(string buf)
: {
: ::SendMessage(*AfxGetMainWnd(),WM_USER+1,0,(LPARAM)buf.c_str());
: //::MessageBox(NULL,buf.c_str(),"",MB_OK);
: }
:
: afx_msg LRESULT CPipeTestDlg::CallUpdateData(WPARAM wP, LPARAM lP)
: {
: m_szRX = (char*)lP;
: UpdateData(FALSE);
: MessageBeep(MB_ICONQUESTION);
: return 0;
: }
:
:
:
: VC++6.0 소스를 올려 드립니다.
|