0

问题:将代码封装到dll中,由于原代码中有对话框资源,对话框中有一个CWebBrowser2控件,移植到dll后,程序不能运行。

跟踪调试,ASSERT信息中提示调用AfxEnableControlContainer来初始化,添加这个函数后,可以使用Create来创建CWebBrowser2控件了,但不能创建成功。

 

在网络上没有找到类似问题的解决办法,暂时放弃,不封装了(白白浪费几个小时)。但有一点很明确,dll中使用CWebBrowser2控件,必须在此之前,调用一下AfxEnableControlContainer函数。

顾名思义,AfxEnableControlContainer()函数是允许应用程序作为控件容器来使用,也就是说你可以在这个应用程序中使用ocx之类的控件。对于用MFC向导自动生成的单文档框架程序的C...APP::InitInstance()函数中自动加了这一句 AfxEnableControlContainer();

如果在程序中使用控件时弹出莫名其妙的错误的时候,看看是不是没有加这一句。


要想在应用程序中使用ActiveX控件,必须使你的应用程序成为ActiveX控件包容器。ActiveX   控件包容器就是完全支持ActiveX控件,并能把控件组合进自己的窗口或对话框的父应用程序。利用MFC的AppWizard,你可以很方便地创建你的包容器程序。事实上,在用AppWizard创建新的应用程序时,你的应用程序就被缺省设置为控件包容器,即在第3步选中支持ActiveX   Controls的复选框。如果你在创建过程中没有选择这项技术支持,以后也可以手动地加入这项支持。如果你手动添加这个函数,和APPWIZEARD添加效果是一样的   


http://zhanyonhu.blog.163.com/blog/static/16186044200851210414182/

关闭 返回顶部
联系我们
Copyright © 2011. 聚财吧. All rights reserved.