如何得到TControl类的对象的句柄?或者,如何自行响应和处理TControl对象的消息?

Libran 2002-11-11 01:56:45
另外,怎样通过Compoments[i]知道该Compoment是否是从TControl继承?是从TWinControl还是TGraphicControl继承?
...全文
61 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lewolf 2002-11-12
  • 打赏
  • 举报
回复
寻找某个位置的控件,使用TWincontrol的ControlAtPos方发,希望几个控件响应同一个事件处理函数,可以使用Sender参数作为判断是那个控件触发的事件。
Libran 2002-11-11
  • 打赏
  • 举报
回复
详细点儿说:
我需要响应Form上的某个不确定的可视控件的鼠标事件,想到的方法是:
1,判断Compoment[i]是否为可视控件,我的判断是看它是否从TControl继承;
2,拦截消息,我打算重置WndProc,但若非TWinControl无法获得其句柄;
3,能否通过鼠标点击即获得该位置的Control?

例如:
Form上可能有几个Edit、Button或者Panel,我要做到任选其中一个,响应它的MouseDown事件,有什么好办法?
huzhangyou 2002-11-11
  • 打赏
  • 举报
回复
如果是
给我一点
如果不是
就算了
信仰只好555555555地走了
huzhangyou 2002-11-11
  • 打赏
  • 举报
回复
libran你是不是放分来了?
  • 打赏
  • 举报
回复
dynamic_cast在类型转换失败的时候会返回一个NULL指针,据此就可以达到你的目的。
代码如 ljianq() 所言.....
ljianq 2002-11-11
  • 打赏
  • 举报
回复
TControl应该没有句柄,TWinControl才有句柄;
判断Component是否是TControl可以这样:

for (int i=0;i<ComponentCount;i++) {
TControl* temp=dynamic_cast<TControl*>(Components[i]);
if (temp) //是从TControl
}
warton 2002-11-11
  • 打赏
  • 举报
回复
gz
pp616 2002-11-11
  • 打赏
  • 举报
回复
用ClassParenth函数
或用InheritsFrom函数可知道继承情况。

处理消息需要重载DefaultHandler可以对所有的消息进行默认处理。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧