组件
class PACKAGE TAnyClass: public TGraphicControl
{
...
protected:
void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y);
...
};
报错!为什么??? 50分
问题点数:50、回复次数:17Top
1 楼iceblue007(冰蓝世纪)回复于 2002-04-14 09:24:53 得分 0
抱什么错啊,关键问题不能含糊啊!
看看你是不是 把MouseDown()的实现的代码删除了,而申明的部分去没删啊!Top
2 楼peachblossom(桃花仙子)回复于 2002-04-14 09:29:36 得分 0
都在,实现部分:
void __fastcall TAnyClass::MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y)
{
ShowMessage("hello~");
}
错误为:
[C++ Error] TRenjuBoard.h(76): E2113 Virtual function '_fastcall TRenjuBoard::MouseDown(TMouseButton,TShiftState,int,int)' conflicts with base class 'TControl'Top
3 楼windindance(风舞轻扬·白首为功名)回复于 2002-04-14 09:39:44 得分 0
试试
DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);Top
4 楼peachblossom(桃花仙子)回复于 2002-04-14 09:46:48 得分 0
也不行!
错误:
[Linker Error] Unresolved external '__fastcall TRenjuBoard::MouseDown(Controls::TMouseButton, System::Set<Classes::Classes__1, 0, 6>, int, int)' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\LIB\TANYCLASS.OBJ
Top
5 楼cdws222(二当家)回复于 2002-04-14 10:41:39 得分 0
TControl里有这个方法,你换一个名子试试Top
6 楼peachblossom(桃花仙子)回复于 2002-04-14 10:56:25 得分 0
换个名字我怎样处理 MouseDown 的消息呢?Top
7 楼lovebcb(京华:开心人生)回复于 2002-04-14 11:45:11 得分 0
这种事情常见,你可以试试,Builder All。Top
8 楼peachblossom(桃花仙子)回复于 2002-04-14 11:55:44 得分 0
Builder All以后,
同样的提示:
[C++ Error] TRenjuBoard.h(76): E2113 Virtual function '_fastcall TRenjuBoard::MouseDown(TMouseButton,TShiftState,int,int)' conflicts with base class 'TControl'
Top
9 楼peachblossom(桃花仙子)回复于 2002-04-15 18:56:33 得分 0
为什么没人帮我。。。。。55555Top
10 楼glyc(大灰狼)回复于 2002-04-16 10:35:36 得分 0
错误表明虚函数MouseDown和基类TControl有冲突。
你先查一下TGraphicControl的声明,看看它是不是重新声明了MouseDown函数,如果没有,你是不能再继续使用(重载)MouseDown函数了。MouseDown在TControl中保护声明。
响应鼠标操作还有其他方法的嘛。
你为什么不从TCustomControl重载呢?
TControl->TGraphicControl,
->TWinControl->TCustomControl。Top
11 楼peachblossom(桃花仙子)回复于 2002-04-16 17:32:08 得分 0
请举个别的响应鼠标操作的例子好吗?谢谢~Top
12 楼peachblossom(桃花仙子)回复于 2002-04-16 17:34:56 得分 0
而且在《C++ BUILDER 开发大全》里面,他就是用这种方法重载的,搞不懂!Top
13 楼glyc(大灰狼)回复于 2002-04-17 08:35:54 得分 50
比如WM_MOUSEDOWN、WM_MOUSEUP等消息就可以用来处理鼠标事件。重载WndProc中处理这些消息。Top
14 楼jinwenming(狼)回复于 2002-04-17 12:59:39 得分 0
照我这样写就可以了!!
__published:
__property OnMouseDown;
Top
15 楼qiu_allan(圣者之剑)回复于 2002-04-18 10:12:33 得分 0
在TControl类中定义了MouseDown事件。
你要在你的头文件中用“__published”,并加上一些标识和参数不同于基类,如你可以定义成:(注意TObject *Sender)
__published
void __fastcall MyAnyMouseDown(TObject * Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
Top
16 楼thunder7971(雷程)回复于 2002-04-28 21:14:06 得分 0
__published:
__property OnMouseDown;
是正确的!
peachblossom(桃花仙子) ?女生吗?Top
17 楼jinwenming(狼)回复于 2002-05-10 20:27:46 得分 0
还没结贴啊!!Top




