• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 最高分求解VisualStudio2008的ActiveX开发问题

最高分求解VisualStudio2008的ActiveX开发问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了visual studio2008,studio2008,virtual studio2008,e studio2008,visio studio2008等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 最高分求解Visual Studio 2008的ActiveX开发问题
描述:

本帖最后由 ada_chang 于 2009-11-23 10:00:07 编辑

在Visual Studio 2008中用MFC ActiveX模板创建的ActiveX控件无法使用,请大家帮忙解决。
我在Visual Studio 2008中,用MFC ActiveX 控件向导创建了控件后,在测试的Project中,用以下方法创建了一段测试,但结果报“灾难性故障”错误,请大家帮忙看看:
1. 添加类,选择“TYPELIC中的MFC类”,选择我创建的TEST_ACTIVE_C,选择两个接口,创建出.c和.h;
2. 在对话框按钮下,增加以下代码:
CDTEST_ACTIVE_C m_active_c;
if ( m_active_c.CreateDispatch(L"TEST_ACTIVE_C.TEST_ACTIVE_CCtrl.1") ) {
m_active_c.AboutBox();
}
3. 启动测试项目,报“灾难性故障”。跟踪了一下,在oledisp1.cpp的STDMETHODIMP COleDispatchImpl::Invoke方法中报错,出错原因是调用IsInvokeAllowed方法时返回FALSE,于是产生例外出错。查了该方法的说明,说是检查该控件是否经过了初始化,如果没有初始化则返回FALSE(返回m_bInitialized的值)。那么,这种VS2008默认生成的控件要如何初始化呢? 谁能给个简单的初始化代码范例吗? 诚恳请求哪位达人给指导一下,非常感谢!
另外,同样的方法和代码,我测试旺旺的组件就一切正常,如:
CWangWangX m_wangwang;
if ( m_wangwang.CreateDispatch(L"AliIMX.WangWangX.1") ) {
AfxMessageBox( m_wangwang.GetWangWangVersion() );
}


解决方案1:

用CWnd::CreateControl传递容器的接口到ActiveX
一般ActiveX都设计为需要一个容器的。

解决方案2:

仍以上面的VS200801 工程为例
新建一个基于对话框的 MFC 工程
工程 | 添加类 | MFC Class From ActiveX Control
然后选择Add Class File (找到你的OCX文件添加)
然后会在 接口里发现
_DVS200801
然后添加
点击完成
工程里会生成
class CDVS200801 : public CWnd
然后使用这个 CDVS200801


CDVS200801 obj;
RECT rect;
rect.left = 100;
rect.right = 200;
rect.top = 100;
rect.bottom = 300;
obj.Create(L"test", WS_VISIBLE | WS_CHILD,  rect, this, 0x1234,NULL,
0,0);
obj.AboutBox();
obj.showme();


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 我用visualstudio2008开发了个activex,客户端安装不用下载net
  • visualstudio2008建立activex工程如何设置生成的安装文件不用net???
  • VisualStudio2008MFC如何MSCommActiveX编程
  • IE8和Visualstudio2008脚本兼容性问题
  • 最高分求解VisualStudio2008的ActiveX开发问题

相关文章

  • 2017-06-04 用directx8跟VS2005结合出错
  • 2017-06-04 用ATL做的DLL型COM,编译后成功在本机注册,请问如何在一MFC项目中调用??
  • 2017-06-04 关于DLL中使用CHtmlView
  • 2017-06-04 ATL能不能继承VB编写的COM组件再封装成COM组件?
  • 2017-06-05 如何将一个可执行程序变成一个服务?我搜过,没有理想答案!
  • 2017-06-04 如何用dll?
  • 2017-06-05 用lcc32制作dll
  • 2017-06-04 如何利用COM+创建服务器端和客户端安装程序
  • 2017-06-04 关于VC读写EXCEL的问题
  • 2017-06-05 静态连接库的问题,请指教!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 自己用COM工程写DLL的时候函数名和VC本身的CreatWindow函数名重名冲突怎么办
    • 天下间真的没有高手了吗??我不信看看这个问题1000分不够开帖子再加?????
    • 一个Work线程是否可以再产生一个Work线程?
    • [求助]如何去除程序中在编译含有Interlocked函数族的C(非C++)代码时产生的warning信息
    • 高分请教DELPHI调用C语言的DLL问题,高手请进(附源代码)
    • 一个多线程调用DLL的问题
    • 如何禁止WebBrowser控件弹出调试对话框?
    • 谁能解决我的问题。
    • ADO中的Recordset如保存在Stream中并再由Stream还原
    • 有关CMSchart实时曲线显示的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有