C++Builder 自定义消息 处理 总结

本文总结了C++Builder中自定义消息处理的两种方法。第一种方法是重写Dispatch函数,通过RegisterWindowMessage注册消息并进行处理。第二种方法是使用BCB提供的宏定义自定义消息,通过MESSAGE_HANDLER宏结合WinProc函数来处理特定消息。
摘要由CSDN通过智能技术生成

这几天忙着弄一个SSDT HOOK驱动,一环扣一环啊,无奈要去理解一下C++Builder是怎么定义自定义消息的。网上资料很多,看了几篇,觉得有必要总结下。也希望找到这篇文章的同志,可以省点力气...

首先,简单讲一下C++Builder的消息机制,BCB的消息处理集成在每个控件类中,首先主窗口有一个最大的消息处理循环函数MainWndProc,这个函数针对一些由BCB特定的消息做处理,其他的则交给WINAPI函数WndProc来处理,这个函数是虚拟函数,在子类中可以具体制定相应的处理函数。WndProc函数也只是初步处理消息,最后还是要调用控件类自己定义的Dispatch函数,这个函数也能被重写,这点告诉我们,我们可以重新写一个DisPatch函数来处理我们自定义的消息。这就是以下的第一种方法:

 

第一种方法:

在TForm1窗体类中的private成员区中加上:

void __fastcall Dispatch(void * Message);//overwrite····

在cpp中的实现为:

void __fastcall TForm1::Dispatch(void * Message)
{
  TForm::Dispatch(Message);
  PMessage pMsg=(PMessage)Message;
  if(pMsg->Msg==(unsigned int)msgnum)
  ShowMessage(AnsiString(msgnum)); //接收消息
}

其中msgnum为RegisterWindowMessage("MSG_MY");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值