比如我现在要捕获窗体下面的一个button的一些消息,我在
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Button1->WindowProc = buttonWndProc;
}
void __fastcall TForm1::buttonWndProc(Messages::TMessage &Message)
{
    //这里进行处理
............
    TForm::WndProc(Message);//这里应该是要给Button1的父类TButton::WndProc(Message)处理,不过这样的话程序会报错,不知道是何种原因,怎么解决
}
当时这样最终不行,请问如何捕获对该button的一些操作?

解决方案 »

  1.   

    //Button1->WindowProc = buttonWndProc;
    //原来Button1->WindowProc是指向一个消息处理过程的,你现在给赋予了新值。
    //那原来的消息过程就找不到啦。
    //我想可以这样。void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      OldWinProc=Button1->WindowProc;   
      Button1->WindowProc = buttonWndProc;
    }
    void __fastcall TForm1::buttonWndProc(Messages::TMessage &Message)
    {
      //这里进行处理
    ............
      OldWinProc(Message);    
    }
      

  2.   

    主要的话定义OldWinProc
    void __fastcall TForm1::OldWinProc(Messages::TMessage &Message)
    {
        TForm1::WndProc(Message);
    }

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {    OldWinProc = Button1->WindowProc;//这里会报Member function be called or its address taken错误
        Button1->WindowProc = butttonProc;
    }