首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么不能调用ActiveX控件的接口中的方法解决思路

2012-02-13 
为什么不能调用ActiveX控件的接口中的方法在工程中Import../MyActiveX.ocx 然后CComPtr _DMyActiveXm_

为什么不能调用ActiveX控件的接口中的方法
在工程中Import   "../MyActiveX.ocx "  
然后
CComPtr <_DMyActiveX>   m_pActiveX;

pActiveX-> CoCreateInstance(__uuid(MyActiveX));
创建成功了
但是接着调用接口中的方法会出错
pActiveX-> DoSomeThing();

Unhandled   exception   at   0x7c812a5b   in   tryDlg.exe:   Microsoft   C++   exception:   _com_error   at   memory   location   0x0012f354..

没有调到控件的函数中去

但是在生成的tlh文件中可以看到定义的方法
请问这是为什么?



[解决办法]
是不是初始化不对,在检查一下你的程序吧.
[解决办法]
构造函数都跟进去了,那不会跟到你那个DoSomeThing()里面去,看看是哪里出问题
[解决办法]
建议将些方法删除,再添加。
[解决办法]
那你一定用错了!

你是在AciveX控件工程中使用它的方法,还是在其它工程使用此控件方法啊?好像有点糊涂了!

在AciveX控件工程中使用此方法,你可以直接对Ctrl类对像进行操作;
如果在其它工程使用的话,你要如此这般:
1、注册控件;
2、在你的工程中的对话框中,插入对应的控件;
3、在对话框上为控件添加一控件变量,这时VC会帮你生成控件对应的类;
4、在对话框中可以操作控件变量了!
[解决办法]
::CoInitinstance();了吗?
如果的你的ACtivex是一个控件,需要画到窗体上的,如果没有父窗口,就不执行了
[解决办法]
http://support.microsoft.com/kb/195188
[解决办法]
会不会是因为某些初始化实在控件的OnCreate之类的函数里面做的,所以需要先创建控件才行,在对话框里调用时,对话框替你创建好控件了已经

热点排行