如何用 C++Builder6 制作一个有复杂界面的 ActiveXControl?

yuanreid 2004-12-16 05:25:24
这个ActiveX控件的界面中包括多个按钮和输入框。

我开始是这样做的,创建一个具有同样界面的BPL控件,然后转换到ActiveXControl,但是发现,这样的Activex控件有问题,运行和设计中,右键点击控件界面中的输入框,都会出现 “Control"" has no parent”的系统错误。
如果大家不相信,可以做一个简单的例子试试:从TWinControl类继承一个新的控件,开放Font属性,控件中放一个TEdit控件,编译成BPL控件后,测试一切正常,再将BPL控件转换为ActiveXControl,编译一切正常。最后测试这个OCX控件,导入BCB也没有问题,从组件面板上把他托到设计窗口中,试试在Edit上点击右键,肯定出现上面的提示。同样,将这个控件直接发布到Web页面上,运行后,在Edit上点击右键,也是同样的错误。

我用Spy++,跟踪消息,发现很多问题:运行后,如果点击这个控件的任何部位(其实就是SetForcus),整个窗口就失去了响应,非要重新激活一下,整个窗口才能正常。
这种ActiveXControl肯定是没法用的,问题太多。

不知道各位BCB高手们,如何开发这样的ActiveX控件啊
...全文
226 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanreid 2004-12-17
  • 打赏
  • 举报
回复
其中一个主要问题,“Control"" has no parent”的系统错误已经解决,方法如下:
VCL自定义控件中的子VCL控件,都放到TWinControl::CreateWnd(void)中创建,不能在VCL自定义控件的构造函数中创建,同时创建中,不能使用 subvclcontrol->Parent = this,统统改为 subvclcontrol->ParentWindow = this->Handle

因为只有Parent属性为NULL时,ParentWindow属性才能生效。
yuanreid 2004-12-17
  • 打赏
  • 举报
回复
谢谢各位老大,我一直一来都被这个鬼问题折腾着,也是采用ActiveXForm来绕开。相信很多用BCB或Delphi开发ActiveXControl的程序员也碰到了同样的问题。我搜了搜Google的开发论坛,这个问题也是多次被提出,但是还没有发现结果。

再补充一下,VCL控件在ActiveXControl模式下,其Parent属性和Owner属性都是为NULL,这就是根本原因,VCL控件在ActiveXControl下是采用ParentWindow来进行操作的。

既然Borland没有说明不能这么做,就应该有办法解解,而且目前这种方式也是最简单的。

这里再次谢谢各位。我找到结果一定贴出来。
Wingsun 2004-12-17
  • 打赏
  • 举报
回复
偶也没做过,而且好久没做了。
我不懂电脑 2004-12-17
  • 打赏
  • 举报
回复
用TActiveXForm
yuanreid 2004-12-17
  • 打赏
  • 举报
回复
我的方法就是先做VCL后转ActiveX,不写任何代码,就用现成的控件组合,就出问题。
毕加索的画 2004-12-17
  • 打赏
  • 举报
回复
d
yuanreid 2004-12-17
  • 打赏
  • 举报
回复
周末结贴。感谢大家参与。
yuanreid 2004-12-17
  • 打赏
  • 举报
回复
ActiveXForm不会有这样的问题
Maconel 2004-12-17
  • 打赏
  • 举报
回复
我做ocx都是用bcb的activeform向导,从没见过有这种情况。
yuanreid 2004-12-17
  • 打赏
  • 举报
回复
楼上的不沾边,感谢帮我up
owg 2004-12-17
  • 打赏
  • 举报
回复
如果楼主是想对界面进行优化,建议参考
http://www.evget.com/view/viewProductInfo.asp?productId=320
cchao 2004-12-16
  • 打赏
  • 举报
回复
传递参数的时候尽量都用VARIANT
应该可以吧
没试过,不知道,呵呵 ^O^
cchao 2004-12-16
  • 打赏
  • 举报
回复
先做vcl
然后再转ActiveX
可以吗~~~~~~~~~~~~~~~~~~~
jishiping 2004-12-16
  • 打赏
  • 举报
回复
没有做过ActiveX控件。
lihongxing2002 2004-12-16
  • 打赏
  • 举报
回复
up

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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