为什么activex控件在测试容器里可以正常使用,但添加到对话框上却出错

 我来答
百度网友e45bb97
2017-04-05 · 超过20用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:21.3万
展开全部
编写一个有界面的ActiveX 控件,放在网页中,这样做的目的是利用Internet Web的便捷,替代一般的客户端.

利用MFC向导建立ActiveX控件后,会生成几个类,其中COleControl (名称为testFrame) 的父类是CWnd ,我们就可以在其上建立我们需要的子窗口了.

新建的工程内容如图:

首先建立一个对话框资源,选 IDD_FORMVIEW,为其建立关联类,基于CDailog,命名为CActXInterface.

选择对话框的属性:

英文版VC:style - child,border - dialog frame, visible, control, static edge

中文版VC:"样式"设置为"下层","更多样式"中选"可见","控件".详细设置见下三图:

第二步:在CYouProjectNameCtrl头文件中添加CActXInterface Dialog 变量:(记得加入头文件)

CActXInterface ActXInterface;

第三步:为CYouProjectNameCtrl添加消息WM_CREAT ,对应函数OnCreat();在其中创建对话框

ActXInterface.Create(IDD_FORMVIEW,this);//IDD_FORMVIEW为资源ID

第四步:在CYouProjectNameCtrl的OnDraw()消息中显示你的对话框.

ActXInterface.MoveWindow(rcBounds,TRUE);

编译,OK.用VC自带容器工具测试.Tool-->ActiveX Control Test...

第五步:注册控件,VC在编译时已自动将控件注册了.要是控件被移动了,要记得重新注册.

第六步:编写HTML文件(这段的详细教程请关注作者的后续文章):加入如下段.

<OBJECT id=DOcxtest1 classid=clsid:706B8249-D5F8-438F-B391-FE7D620C946C </OBJECT>

clsid为控件的注册id,需要改成该运行环境的注册id,见VC工程目录中odl文件中如下段(该段在文件最后,别弄错了id)

// Class information for CAxtiveX_InterfaceCtrl

[ uuid(706B8249-D5F8-438F-B391-FE7D620C946C),

helpstring("AxtiveX_Interface Control"), control ]

第七步:按以上步骤做了之后,用IE打开HTML文件,发现ActiveX控件界面很小,这个可以在容器(HTML文件)中设定:

如:

<OBJECT id=DOcxtest1 classid=clsid:706B8249-D5F8-438F-B391-FE7D620C946C width="532" height="356">

<PARAM NAME="_Version" VALUE="65536">

<PARAM NAME="_ExtentX" VALUE="2646">

<PARAM NAME="_ExtentY" VALUE="1323">

<PARAM NAME="_StockProps" VALUE="0">

</OBJECT>

至此,全部ok,你可以方便地在该对话框中建立你想要的控件,如按钮,Edit等
网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式