• 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 > 怎样才能从MFC的CDialog派生的类支持IDispatch接口啊?

怎样才能从MFC的CDialog派生的类支持IDispatch接口啊?

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

佚名通过本文主要向大家介绍了mfc cdialog,idispatch接口,cdialog,cdialog onok,cdialog类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 怎样才能从MFC的CDialog派生的类支持IDispatch接口啊?
描述:

CDialog是从CCmdTarget继承下来的,可是不能从CDialog的派生类中直接得到
IDispatch接口,(在CMyDialog的成员函数中用下面代码会使程序崩溃)
LPDISPATCH pDisp = this->GetIDispatch(TRUE);
要对CMyDialog进行怎样的处理才能使上面这句代码正确执行呢?


解决方案1:

在CMyDialog的类声明中(即头文件)加入
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
两个宏,再在源文件(.cpp)中添加
BEGIN_INTERFACE_MAP( CMyDialog, CDialog )
    INTERFACE_PART( CMyDialog, IID_IDispatch, Dispatch )
END_INTERFACE_MAP()
和
BEGIN_DISPATCH_MAP( CMyDialog, CDialog )
END_DISPATCH_MAP()
并在构造函数调用EnableAutomation();即可。再在BEGIN_DISPATCH_MAP和END_DISPATCH_MAP宏之间加入楼主想加的DISP_FUNCTION之类的宏以建立映射。如果楼主先手动添加DISP_FUNCTION之类的宏麻烦,可如下修改即可使用ClassWizard来对这个类添加方法和属性了
在.cpp中
BEGIN_DISPATCH_MAP( CMyDialog, CDialog )
    //{{AFX_DISPATCH_MAP( CMyDialog )
    //}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
在.h中,在类声明中的任何一个地方加入
    //{{AFX_DISPATCH( CMyDialog )
    //}}AFX_DISPATCH
如上后就可通过ClassWizard来添加方法和属性了


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

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

  • 支持MFC的ATL工程如何使得COM组件的外观就是MFC中的一个CDialog?
  • 如何在MFC扩展dll内创建线程,并在线程里使用自定义的CDialog控件?
  • 在MFC扩展DLL中导出继承于CDialog的对话框类?
  • MFC中CDialog转成CPaneDialog之后遇到的问题
  • 怎样才能从MFC的CDialog派生的类支持IDispatch接口啊?

相关文章

  • 2017-06-05 多线程应用中,如何调用FreeLibrary才能保证不死机?
  • 2017-06-04 高手指点:vc中调用VB写的DLL中的函数?
  • 2017-06-04 wireHWND类型的作用是什么?
  • 2017-06-04 取得directinput输入的控件!!
  • 2017-06-05 有关windows核心编程的作业的问题(在线等待)
  • 2017-06-04 如何在MSWord里面添加我的程序的菜单?并且能调用我的程序处理数据?
  • 2017-06-05 关于钩子函数的问题之二
  • 2017-06-04 ActiveX控件的编写
  • 2017-06-04 问个ActiveX接口的问题,怎么定义一个接口传递一个函数指针进去
  • 2017-06-05 动态链接库怎么才能像MFC一样使用?在线,解决问题另送100分!(顶贴有分!)

文章分类

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

最近更新的内容

    • 运行时动态替换Dll的问题
    • 请问dcom如何注册
    • 有关MSCOMM在多线程通讯程序中的疑问!!!
    • 创建ATL工程的时候,多了一个同名字但是带有PS后缀的工程,那是干什么用的?
    • 如何在主线程控制子线程得启动,挂起,唤醒,停止那?(对于用户界面线程)
    • 难题求助(急!):VC/MFC,使用AutoCADActivex接口提供的GetPoint()函数问题函数的问题
    • 使用setparent的奇怪问题
    • ATL开发的控件在IE中的焦点问题
    • CoInitial尚未呼叫错误
    • 菜鸟求助关于DataGrid空间更新问题

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

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