初涉Delphi下Windows消息机制——同一程序内自定义消息实例

 

消息区别于调用的优势:消息可以让你不需要知道接收者的确切类型。同时,消息可以有选择地处理。如果接收者对消息没有做任何处理,不会造成任何后果。最后,消息可以广播给多个接收者,而要同时调用几个过程则比较困难。

下面是一个在同一应用程序内自定义消息的实例:

创建一个窗口FORM1,拖一个按钮控件,btn1。双击btn1,创建btn1的点击事件。代码如下(省略头部代码):

 

 

运行该程序,点击button,就会运行SendMessage发送MY_MESSAGE这样一个自定义消息过去。Mymessage接受到该消息就会产生beep声响。

向指定窗口句柄发送消息的函数有3个,也就是sendMessage可以用其他两个代替:

Form1.perform(MY_MESSAGE,0,0);

PostMessage(Form1.Handle,MY_MESSAGE,0,0);

Perform和SendMessage是要等消息处理结束后才返回,而PostMessage则是把消息送到消息队列之后,立即返回,管你什么时候处理。

在这个程序中。我们定义消息常量MY_MESSAGE=WM_USER+100;因为系统约定WM_USER+100到$7FFF之间是留给用户自定义的消息常量值。

procedure mymessage(var mymsg:TMessage);message MY_MESSAGE;

这次传递的是TMessage类型。而message标识符后面则是自定义消息常量。

SendMessage(Form1.Handle,MY_MESSAGE,0,0);

这是发送消息函数,参数类型分别为HWND,UINT,WPARAM,LPARAM,分别对应TMsg前4个成员。返回值为LRESULT,对应消息处理结果。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值