• 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 > 在ATL写的DLL中,在接口的方法中,函数指针作为参数应该如何传递?谢谢!

在ATL写的DLL中,在接口的方法中,函数指针作为参数应该如何传递?谢谢!

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

佚名通过本文主要向大家介绍了在ATL写的DLL中,在接口的方法中,函数指针作为参数应该如何传递?谢谢!等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在ATL写的DLL中,在接口的方法中,函数指针作为参数应该如何传递?谢谢!
描述:

我用ATL写了一个COM的DLL,定义了一个接口IA,在接口IA中定义了一个方法BB,但是这个方法BB中,我想传递一个函数指针作为参数,但在编译时总是提示不能用函数作为参数,请问有什么办法吗?
typedef BOOL (*FUNC)(int *a);
LRESULT BB(FUNC pFunc);
在应用DLL的时候,类似于如下:
BOOL Func(int *a)
{
  return TRUE;
}
BB(Func);
就象EnumWindows可以直接传递EnumWindwosProc一样的作用.
谢谢!


解决方案1:

不知道随便写一个类型如void * ,然后强制类型转换一下行不行?
虽然不建议这么作,但是如果调用的时候不使用其它语言,是完全可行的,因为指针是传一段地址,也就是传值!

解决方案2:

任意四个字节长度的数据类型都可以,至于怎么传递,怎么转换,随便,
欧一直用memcpy,价格便宜,量又足,我们一直都用它。关键是你必须让MIDL知道
你传递的参数大小,其他的一概不需要管,什么类型都可以转换成其他的任何类型

解决方案3:

以下代码可以运行:
#include "stdafx.h"
typedef bool (*Fun)(int);
bool Funa(int a);
bool Funb(Fun fun);
int main(int argc, char* argv[])
{
printf("Hello World!\n");
Funb(Funa);
return 0;
}
bool Funa(int a)
{
printf("Fun a is called!! a=%d",a);
return true;
}
bool Funb(Fun fun)
{
fun(10);
return true;
}

解决方案4:

不知道随便写一个类型如void * ,然后强制类型转换一下行不行?


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

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

  • 在ATL写的DLL中,在接口的方法中,函数指针作为参数应该如何传递?谢谢!

相关文章

  • 2017-06-05 c++高手请进,,,请教一个关于类模板的问题即我给类模板传递一个类时,若该类也为类模板
  • 2017-06-04 fantong,用过AmbientUserMode吗?
  • 2017-06-04 VC2005开发的DLL无法在CB6中调用
  • 2017-06-05 ADO连接问题,求教高手
  • 2017-06-04 COM定义接口的问题
  • 2017-06-04 有谁知道在internet选项里添加另一个选项的!像3721在“高级”里添加了个“网络实名”一样!
  • 2017-06-04 非常奇怪的问题,ocx出古怪的错误,请大家帮我看看
  • 2017-06-04 ocx控件一定要有属性方法事件吗?
  • 2017-06-04 控件下载的问题,各位老大帮帮忙啊,很急!!!!!
  • 2017-06-04 关于IDataObject接口的问题

文章分类

  • 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注入的问题,怎么解决DLL被多次调用?
    • dll中无模式对话框中使用控件
    • ActiveX控件VARANT
    • 在动态库中还能调用com组件啊?我调用老是失败
    • 谁能告诉我CComBstr和CComVariant之间怎么转换,我想把任何变量都转化为BSTR怎么做?
    • 如何实现进程间的通信?
    • 有没有专门讲解ActiveX技术的书籍??
    • 为什么我在activexcontroltestcontainer看不到我写得控件呢?
    • @classMyclass;在c++代码里是什么含义?

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

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