一个C++Bulider 消息过程处理WndProc的问题
TForm类继承于TCustomForm类。在TCustomForm类中,WndProc是一个Protected的Virtual函数。TForm类中未有另外实现WndProc。TForm1类(也就是我们创建新的工程时默认生成的)继承于TForm类。
好了,问题就来了,当我在TForm1中重新实现WndProc时,编译提示在Obj中已经有了这个WndProc。
而且我在TForm1的实例Form1中通过TCustomForm::WndProc调用时,提示TCustomForm::WndProc是不可见的,不是说好了Protected可以在子类中被访问吗。
那么,我如果自己重现WndProc处理一些特定的消息过后,其它的消息我应该传给谁去处理呢?我看到很多书上有写着是TForm::WndProc。而这里编译时实际上指向了TCustomForm::WndProc,提示不可见,不能调用。 BCB? 类 继承 WndProc 消息
[解决办法]
TForm1是直接父继承与TForm,不是TCustomForm
方法三 重载 WndProc
private: // User declarations
void __fastcall WndProc(Messages::TMessage &Message);
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
Caption = Now();
TForm::WndProc(Message);
}