自定义消息发送与处理及获取枚举名称

const First_My_Msg= WM_USER+10;
type TMyMsg=(
        my_msg3, // = WM_USER+10,
        my_msg4,
        my_msg5);
type
  TForm1 = class(TForm)
    lst1: TListBox;
    btn1: TButton;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
        procedure showMsg(msg: string);
    { Public declarations }
  protected
    procedure WndProc(var msg:TMessage);override;
  end;
const my_msg = WM_USER + 1;
const my_msg2= WM_USER + 2;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure myCallback(hWnd: THandle; MsgId:Cardinal; dwData: Integer;lResult:DWORD);stdcall;
var
  astr: array[0..MAX_PATH - 1] of AnsiChar;
begin
    GetWindowText(hWnd, @astr, MAX_PATH);
  Form1.showMsg(Format('handle: %d, msgid: %s, dwData: %d, result: %d, window text: %s',
    [hWnd, GetEnumName(TypeInfo(TMyMsg), MsgId-First_My_Msg), dwData, lResult, astr])); //

end;

{ TForm1 }

procedure TForm1.WndProc(var msg: TMessage);
begin
  inherited;
  case msg.Msg of
    my_msg:
      showMsg('my message');

    my_msg2:
      showMsg('my message2');
  end;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  SendMessage(Self.Handle, my_msg, 0, 0);
end;

procedure TForm1.showMsg(msg: string);
begin
  lst1.Items.Add(Format('[%s] %s', [FormatDateTime('hh:mm:ss', now), msg]));
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  // PostMessage(Self.Handle, my_msg2, 0, 0); 中文
  SendMessageCallback(Self.Handle, Cardinal(my_msg4)+First_My_Msg, 0, 0, @myCallback, 123);
end;

end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值