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
[49846] Re:메세지 주고 받기..
장성호 [nasilso] 1478 읽음    2007-07-10 11:08
[문제원인]
메세지 수신하는쪽에서요...

void __fastcall TForm1::WndProc(Messages::TMessage *Message)
그냥 위와같이 함수 선언해 둔다고 해서 WindowMessage가 저쪽으로 들어오지 않습니다.
디버그 모드로 run한후에 Editer를 보세요
아마 한번이라도 함수를 타게되면 에디터 왼쪽에 쩜이 찍히는데...
WndProc 함수는 찍혀있지 않을꺼예요


[해결방법]

방안1. Dispatch를 쓰던지 ...
virtual void __fastcall Dispatch(void *Message);
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=542



방안2. 아니면 SubClassing 하는방법도 있구요

TWndMethod OrgWinProc;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    OrgWinProc=this->WindowProc;
    this->WindowProc=WndProc2;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::WndProc2(Messages::TMessage &Message)
{
    OrgWinProc(Message);
   if( Message.WParam == 100 )
       ShowMessage("!");
}
//---------------------------------------------------------------------------

방안3. 메세지 맵을 쓰셔도 됩니다.

*.h
void __fastcall TForm1::ShowMessageProc(TMessage& Msg);

  BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_USER + 1234, TMessage, ShowMessageProc)
  END_MESSAGE_MAP(TForm);


*.cpp
void __fastcall TForm1::ShowMessageProc(TMessage& Msg)
{
       if( Msg.WParam == 100 )
             ShowMessage("!");
}
.....

그럼....



볼랜드 어렵네요 ㅠㅠ 님이 쓰신 글 :
: 한개의 폼(exe)에다 이렇게 정의 해놓쿠..
: void __fastcall TForm1::WndProc(Messages::TMessage *Message)
: {
: //
:    if( Message->WParam == 100 )
:        ShowMessage("!");
: }
:
:
: 다른 폼(exe)에다가 이렇게 정의 했습니다.
: #define WM_USER_SHOWMSG WM_USER + 1234
:
:     HWND hWND = NULL;
:     hWND = FindWindow( 0, "Show");
:
:     if( hWND  != NULL )
:     {
:         PostMessage( hWND, WM_USER_SHOWMSG, 100, 0 );
:     }
:
: 왜 않되는지 좀 알려주세요...
: 인터넷 뒤지다가 나름 이해한 다음에 한건데..

+ -

관련 글 리스트
49845 메세지 주고 받기.. 볼랜드 어렵네요 ㅠㅠ 1216 2007/07/10
49846     Re:메세지 주고 받기.. 장성호 1478 2007/07/10
49847         Re:Re:메세지 주고 받기.. 볼랜드 어렵네요 ㅠㅠ 1306 2007/07/10
49848             Re:Re:Re:메세지 주고 받기.. 장성호 1920 2007/07/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.