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
[29498] Re:[질문]메세지 핸들러에서..WM_COPYDATA
smleelms [smleelms] 1651 읽음    2004-04-24 16:31
음.. 제가 보기에는 한 1~2곳 의문스러운 부분이 있습니다만.. 풀소스가 아니고 부분,부분 올리셔서 뭐라고 찍어서 말씀드리기가 뭐하네요.. (즉.. 실력이 안된다는 얘기.. ^^;;)
제가 사용하는 소스를 올려봅니다.. 한번 참고해보세요...


메시지를 보내는 쪽..
void __fastcall TFormMain::ThdTimer1Timer(TObject *Sender)
{
    HWND        hWnd;
    COPYDATASTRUCT CopyData;
    char *SendBuffer = NULL;
    int nLen;
    AnsiString msg = "TimerEnd";
    nLen = msg.Length();
    if( nLen <= 0 ) return;
    SendBuffer = new char[nLen];

    strncpy(SendBuffer,msg.c_str(),nLen);
    hWnd = FindWindow(NULL, "Handler");

    if (hWnd)
    {
        CopyData.dwData = WM_COPYDATA;
        CopyData.cbData = nLen + 1;
        CopyData.lpData = SendBuffer;
        ::SendMessage(hWnd, WM_COPYDATA, (WPARAM)Handle, (LPARAM)(&CopyData));
    }
    if( SendBuffer )
    {
        delete SendBuffer;
        SendBuffer = NULL;
    }
}

메시지를 받는 쪽 헤더..

public:        // User declarations
    void __fastcall OnReceive(TMessage &Message);
    BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_COPYDATA, TMessage, OnReceive)
    END_MESSAGE_MAP(TForm)

그리고 소스..
void  __fastcall TFormMain::OnReceive(TMessage &Message)
{
    AnsiString str;
    COPYDATASTRUCT *ReceiveData;
    ReceiveData = (COPYDATASTRUCT *) Message.LParam;
    str = (char *) ReceiveData->lpData;
    str = str.SubString(1,8);
    if(str == "TimerEnd")
    {
    ...
    }
}

+ -

관련 글 리스트
29497 [질문]메세지 핸들러에서..WM_COPYDATA 초보 1783 2004/04/24
29498     Re:[질문]메세지 핸들러에서..WM_COPYDATA smleelms 1651 2004/04/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.