C++Builder 处理控制消息而无需子类化的特定方法?

问题描述 投票:0回答:1

我似乎记得一些 C++Builder 处理来自控件的消息的特定方法,而无需实际子类化控件。是否存在这样的选择?或者 C++Builder 是否有一种特殊的方法可以用来轻松地子类化控件。

在这种情况下,我想从 TEdit 控件处理 WM_COPY,这样它就不会自然发生,我需要处理它。

蒂亚!!

c++builder
1个回答
0
投票

这似乎有效:

.h:

class TMyForm : public TForm
{
  // ...
  private:
    virtual void __fastcall MyEditWndProc(TMessage &Message);
    System::Classes::TWndMethod  m_PriorMyEditWndProc;
  // ...
};

.cpp:

__fastcall TMyForm::TMyForm(TComponent* Owner)
    : TForm(Owner)
{
    m_PriorMyEditWndProc=MyEdit->WindowProc;
    MyEdit->WindowProc=MyEditWndProc;

}

void __fastcall TMyForm::MyEditWndProc(TMessage &Message)
{
    if (Message.Msg == WM_COPY) {
      // ...
    }
    else if (Message.Msg == WM_DESTROY) {
        MyEdit->WindowProc=m_PriorMyEditWndProc;
        m_PriorMyEditWndProc(Message);
    }
    else {
        m_PriorMyEditWndProc(Message);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.