C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[11026] Re:Re:Re:메시지 맵에서......(고수님들 부탁합니다.)...다시한번 부탁합니다
박세호 [oxengs] 1166 읽음    2001-09-13 14:12
쩝..
그냥 그렇게만 쓰시면 오류가 발생합니다..
그래서 항상 Window Message나 Virtual함수를 쓸때는 Dispatch나
함수명을 호줄한 Form이나 Control에게 돌려 줘야합니다.
아래 같은경우는
소스파일
void __fastcall TForm1::WndProc(TMessage & Message)
{
     TForm::WndProc(Message);  <<-- 이렇게 넣어주면됨
}
넣어주면 오류가 나지않습니다..
하시고자 하는 코딩은 TForm::WndProc(Message); 전후로 하시면 됩니다
전에 할경우와 후에 할경우는 약간틀립니다..TForm::WndProc(Message);를
먼저 수행하면 TForm::WndProc(Message);의 기능을 한후 코딩처리가 되겠죠..^^


헐~ 님이 쓰신 글 :
: 답변 감사 드립니다.
: 근데,최상천 님이 써 주신 대로 해도, 스택오버플로가 뜨네요
: 제발 아시는 분이 있으시면 답변주세요..
:
:
: 최상천 님이 쓰신 글 :
: : 님께서 WndProc를 오버라이딩 한다고 했는데 아래를 보니까
: : 위도우 메세지(WM_CLIENT_MSG) 핸들러를 오버라이딩 할려구 시도를 했군요.
: :
: : 그렇게 하시면 않되구요. 그냥 WndProc함수를 코딩하세요.
: : WndProc가 아래와 같이 된 함수니까
: : virtual void __fastcall WndProc(Messages::TMessage &Message);
: :
: : //-----------------------------------------------------------
: : 헤더파일
: : protected:
: :     void __fastcall WndProc(TMessage & Message);
: :
: : 소스파일
: : void __fastcall TForm1::WndProc(TMessage & Message)
: : {
: :          //여기에 필요한 코드를 넣으시면 됩니다.
: : }
: : //-----------------------------------------------------------
: : 이렇게 하시면 됩니다. 쉽죠?
: : 그럼 이만.
: :
: : 헐~ 님이 쓰신 글 :
: : : 윈도우 메세지를 받는 부분을 구현해야 되는데,
: : : WndProc 를 오버라이딩 하는 방법이나, 메시지 맵을 이용하는 방법을 모두 사용해 봤는데, 잘 안되더라고요.
: : : 컴파일은 잘 되는데, 실행시에 스텍오버플로라는 에러 메시지가 뜹니다..
: : : 일단 헤더에 다음과 같이 디파인해 주었고,
: : : #define WM_CLIENT_MSG WM_USER+8
: : :
: : : private:    // User declarations
: : :         void __fastcall WMSysCommand(TMessage &Message);
: : :
: : : protected:
: : :         BEGIN_MESSAGE_MAP        // 메시지 맵을 선언
: : :                 MESSAGE_HANDLER(WM_CLIENT_MSG,TMessage,WMSysCommand)
: : :         END_MESSAGE_MAP(TFrmMain)
: : :
: : : Cpp화일에는
: : :
: : : void __fastcall TFrmMain::WMSysCommand(TMessage &Message)
: : : {
: : :         if(Message.CmdType == WM_CLIENT_MSG)
: : :                if(Message.WParam == 4)
: : :                 {
: : :                         if(Message.LParam == 1)
: : :                         {
: : :                                 Application->MessageBox("사용자 메시지 테스트->접속성공","경고",MB_OK);
: : :                         }
: : :                         else
: : :                         {
: : :                                 Application->MessageBox("사용자 메시지 테스트->접속실패","경고",MB_OK) ;
: : :                         }
: : :
: : :                 }
: : :                 else
: : :                         TFrmMain::Dispatch(&Message);
: : :
: : : }
: : :
: : : 에러가 뜨는 이유를 가르쳐 주세요.
: : : 부탁합니다.

+ -

관련 글 리스트
11011 메시지 맵에서......(고수님들 부탁합니다.) 헐~ 1041 2001/09/13
11070     Re:논리적인 재귀호출을 하셨습니다. 박지훈.임프 1170 2001/09/14
11013     Re:메시지 맵에서......(고수님들 부탁합니다.) 최상천 1181 2001/09/13
11021         Re:Re:메시지 맵에서......(고수님들 부탁합니다.)...다시한번 부탁합니다 헐~ 1228 2001/09/13
11026             Re:Re:Re:메시지 맵에서......(고수님들 부탁합니다.)...다시한번 부탁합니다 박세호 1166 2001/09/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.