C++Builder 使用TWndMethod方法重写控件消息

本文介绍了C++Builder中TWndMethod类型的作用,它用于处理Windows消息程序。通过TWndMethod,开发者可以重写控件的消息响应,实现自定义的窗口消息处理。

C++Builder里TWndMethod解释

TWndMethod is the type for Windows message procedures.


typedef void __fastcall (__closure *TWndMethod)(Messages::TMessage &Message);

Description

Each Window has a message procedure that responds to calls from Windows. These calls can originate from Windows (such as paint messages), from user actions (such as mouse messages), or from your messages that you send in your own code.

TWndMethod is the type for VCL-based message procedures. Message procedures of this type can be assigned to controls using the WindowProc method. In addition, a window that implements this procedure but which is not associated with a control can be created using the AllocateHWnd function.

The Message parameter encapsulates the message to which the procedure responds. It contains fields for the incoming message parameters and a result field that holds the return value.

比如:
重写Image1控件的消息循环:
定义一个消息处理函数过程:


//.h 中
TWndMethod   OldImageWndProc5;//定义一个函数过程,(实际上是一个地址)
 void __fastcall  NewImageWndProc(TMessage&   Message);//自定义的新回调函数

//.cpp中
  OldImageWndProc5=Image1->WindowProc;//把Image1的原先消息回调函数地址赋值给OldImageWndProc5,方便完成自己的代码后调用
  Image1->WindowProc=NewImageWndProc;//把image的消息毁掉函数指向到我们定义的回调函数 NewImageWndProc5



void __fastcall TForm2::NewImageWndProc(TMessage&Message)
{
    if(Message.Msg==CM_MOUSELEAVE)
    {
        Image1->Picture->Assign(MinNoth);
        bmpok5=true  ;
    }
    else if(Message.Msg==CM_MOUSEENTER)
    {
        Image1->Picture->Assign(MinMove);
        bmpok5=false;
    }

    OldImageWndProc5(Message);
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值