CBuilder 高手来看看(继承祖先类中的方法和消息处理函数) (100分)

  • 主题发起人 主题发起人 面条
  • 开始时间 开始时间

面条

Unregistered / Unconfirmed
GUEST, unregistred user!
具体说就是怎么在CBuilder中继承祖先类中的方法和消息处理函数,以下代码是
我临时写的,不一定能编译,主要看意思。
例如在Delphi中我有这样一段代码:

type
TMyEdit=class(Edit)

protected
procedure WMChar(var Msg:TMessage);message WM_CHAR;
procedure Change;override;
end;

implementation

procedure TMyEdit.WMChar(var Msg:TMessage);
begin
ShowMessage('ok');
inherited;
end;
procedure TMyEdit.Change;
begin
inherited;
Beep;
end;

在CBuilder中我不知如何实现才是正确的
以下是我的代码
.HPP:

class THD_HZEdit : public TEdit
{
private:
protected:
void __fastcall WMCHAR(TMessage &Msg);
void __fastcall Change(void);
public:
__fastcall THD_HZEdit(TComponent* Owner);

__published:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_CHAR,TMessage,WMCHAR);
END_MESSAGE_MAP(TCustomEdit);
};

.CPP:
void __fastcall THD_HZEdit::Change(void)
{
TEDit::Change(); //调用祖先类的方法
Beep();
}

void __fastcall THD_HZEdit::WMCHAR(TMessage &Msg)
{
if (Msg.WParam<128)
Msg.WParam=0;
//因为祖先类的同名处理函数申明为私有,无法调用(与Delphi中不同,
//CBuilder所有消息处理函数都申明为私有,而不是保护)。
//所以我只能让祖先类重新分派消息
TCustomEdit::Dispatch(&Msg);
}
 
就是这样,有什么疑问吗?
 
就这样???
 
什么问题?
 
谁能拍胸脯保证:
就因该像我写的那样,已经是绝对标准啦
 
面条:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
还有人来侃侃吗?
 
>>谁能拍胸脯保证:
>>就因该像我写的那样,已经是绝对标准啦

不能象你保证是绝对标准,谁知道什么是绝对标准?
BCB的一本教程上就是这么写的,大致如此吧。
如果有什么疑问,拿出来讨论一下不是更好?
 
面条:你在干吗?
 
面条:有什么疑问請繼續,否則要結束問題了
 
接受答案了.
 
后退
顶部