按钮是一个控件,类完全封装起来了,如果想截取按钮的 Windows 消息,继承按钮类新做一个控件太麻烦了。
而控件的 WindowProc 事件就是执行控件的 Windows 消息,和 WndProc 是相同的作用。
BnOKDefProc = BnOK->WindowProc; //保存按钮需要执行的 Windows 消息到 BnOKDefProc
BnOK->WindowProc = BnOkWndProc; //给按钮一个新的消息处理函数, 在这个函数里如果用按钮以前的处理, 需要调用 BnOKDefProc
void __fastcall TFormAbout::BnOkWndProc(Messages::TMessage &Message) //相当于重载 BnOK::WndProc() 方法
{
if(Message.Msg==CM_MOUSEENTER) //新处理的 Windows 消息, 当鼠标移入按钮时产生的
BnOK->Font->Color = clRed;
else if(Message.Msg==CM_MOUSELEAVE) //新处理的 Windows 消息, 当鼠标移出按钮时产生的
BnOK->Font->Color = clWindowText;
BnOKDefProc(Message); //其他消息用按钮原来的, 相当于调用父类的 TButton::WndProc(Message);
}
--------------------next---------------------
阅读(1142) | 评论(0) | 转发(0) |