Q&A

  • 사용자 메시지 생성 방법에 대해서 알려주세요..
델파이를 잘모르는 초보자 입니다.
제가 C++로 제작한 모듈을 사용하려고 하는데
C++에서 User Message를 생성하여서 핸들링 하고 있습니다.
델파이를 공부 하다 보니 메시지를 핸들링 하는 방법은 나와있는데
User Message 등록에 대한 부분이 없는것 같아서
혹시 아시는 고수님들께 부탁 드리고자 합니다.

아시는 분들꼭좀 알려주시길 다시한번 부탁 드립니다.
4  COMMENTS
  • Profile
    최용일 2002.08.14 19:25
    안녕하세요. 최용일입니다.

    두가지 방법이 있겠네요. 사용자 메세지 정의해서 메세지 핸들러 이용하는 방법하고, 윈도우에 메세지 등록해서 WinProc에서 처리하는 방법. 처음 방법이 일반적으로 많이 사용하고 쉬운 방법입니다. 하나의 프로그램 내에서만 사용하신다면 굳이 등록하실 필요는 없어요... 쉬운 방법으로 하세요...

    const
        MyMessage = WM_USER + 100;
    type
        TForm1 = class(TForm)
        public
            ......
            procedure MyMessageHandler(var Message); message MyMessage;
        end;

    implementation

    procedure TForm1.MyMessageHandler(var Message);
    begin
        ......
    end;

    ^^ 항상 즐코하세요...

  • Profile
    임지운 2002.08.14 19:28
    설명 감사합니다.
    핵심을 잘 집어서 설명해 주셨네요 감사감사..
    그런데 윈도우에 메시지를 등록해서 WinProc에서  처리하는 방법도
    알려주시면 감사드리겠습니다.

    다시한번 답변에 감사 드립니다.

  • Profile
    최용일 2002.08.14 19:52
    안녕하세요. 최용일입니다.

    그냥 메세지 등록해서 사용하시면 됩니다. 사용 방법은 별 차이 없으니까...

    type
        TForm1 = class(TForm)
            SendButton: TButton;
            procedure FormCreate(Sender: TObject);
            procedure SendButtonClick(Sender: TObject);
        protected
            ......
            MsgValue: UINT;
            procedure WndProc(var Message: TMessage); override;
        end;

    implementation

    procedure TForm1.FormCreate(Sender: TObject);
    begin
        // 메세지 등록
        MsgValue := RegisterWindowMessage('MyCustomMessage');
    end;

    procedure TForm1.SendButtonClick(Sender: TObject);
    begin
        // 메세지 보내기
        SendMessage(Form1.Handle, MsgValue, 0, 0);
    end;

    procedure TForm1.WndProc(var Message: TMessage);
    begin
        // 메세지 처리
        if (Message.Msg >= $C000) and (Message.Msg <= $FFFF) then
        begin // 등록된 메세지인가 범위 검사
            if Message.Msg = MsgValue then // 등록된 메세지이면
                // 원하는 처리...
                ShowMessage('사용자 정의 메세지가 수신되었습니다.');
        end
        else
            inherited;
    end;

    ^^ 항상 즐코하세요...

  • Profile
    임지운 2002.08.14 20:05
    답변 감사합니다.
    위에 또 질문들 드렸는데 해결이 된듯 하네요 ^^;
    대단히 감사 드립니다.

    델파이가 처음이라 ^^;
    너무 많이 모르네요
    자주 질문 드릴지 모르겠습니다.

    그럼 좋은 하루 되세요 다시한번 감사 드립니다.