我似乎记得一些 C++Builder 处理来自控件的消息的特定方法,而无需实际子类化控件。是否存在这样的选择?或者 C++Builder 是否有一种特殊的方法可以用来轻松地子类化控件。
在这种情况下,我想从 TEdit 控件处理 WM_COPY,这样它就不会自然发生,我需要处理它。
蒂亚!!
这似乎有效:
.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);
}
}