|
님께서 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);
:
: }
:
: 에러가 뜨는 이유를 가르쳐 주세요.
: 부탁합니다.
|