在ATL接口中添加自定义函数
来源:互联网 发布:输电线路三维设计软件 编辑:程序博客网 时间:2024/04/29 02:29
一般而言,我们会在dll接口,即使想要在内部实现某些更小模块也只消在继承该机口的类中添加功能函数,但是仅仅这样,该功能函数是不能暴露给外部使用的,其作用域只在类的内部,所以怎样才能给接口添加自定义函数,同时暴露出来呢?
这就要说到idl了,即interface description language,接口描述语言。
[object,uuid(D01D924C-FCFC-4309-A1AB-180E4A22324F),//IID_hInstancedual,nonextensible,pointer_default(unique)]interface IhInstance : IDispatch{//表示他是一个自动化接口 HRESULT Msg(DWORD bg); HRESULT Msg2(DWORD* know); HRESULT PrintMsgW([unique][string][in]const wchar_t*); };[uuid(70F0571D-85B7-4E7F-BE65-626DE932A3DB),//LIBD_customLibversion(1.0),]library customLib{importlib("stdole2.tlb");//引入其他类型库信息[uuid(0AED49B0-D7EA-4D87-90EF-9F404103A5F8)//CLSID_hInstance]coclass hInstance//对象类型信息{[default] interface IhInstance;//指定缺省接口如果还有其他接口 则,没有[default]};};其中关键字"library"表示一个类型库,被其前面[]中的内容修饰,有一个GUID ,version和helpstring()/*可选*/
在coclass hInstance的{};中包含了该类型库支持的接口名称列表。
下面说下接口的信息,我们可以这样认为[]中的内容主要是为了修饰其后方的方法或者属性
例如为一个接口声明一个方法的话
[propget,helpstring("帮助说明符")]//这是修饰说明符propget,说明了该方法是要获得该接口的指定的属性值而propput修饰符,则是为了重新设置接口的属性值
其实我最想说的是在接口方法中对于参数的修饰符的说明
[in]输入参数
[out]输出参数
[unique]只有在参数为指针类型的时候才有用,即,允许指针类型的参数的实参值为NULL
[ref]该类型的指针参数必须为non-null,同时在函数执行过程中不能被改变,同时所有[out]类型的参数默认也被[ref]修饰
[ptr]和[unique]类似,但是可以使用别名
对于IDL支持的数据类型,一般都还行吧,笔者遇到的只有一个麻烦就是我想声明的是:
HRESULT PrintMsgA([unique][in]const char*);但是总出现不能实例化抽象基类的问题,最终通过修改变成了
HRESULT PrintMsgA([unique][in]const byte*);就通过了,虽然至今不知为什么,但也算是一个解决方案了
有朋友遇到的话可以试一下
- 在ATL接口中添加自定义函数
- ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用
- 在MFC工程中添加ATL
- 在ATL项目中添加WTL界面
- 关于在ATL中自定义消息
- 如何在xen blktap中添加自定义虚拟磁盘接口
- 如何在windows批处理中添加自定义函数
- 在 Android 中使用自定义函数接口替换 Frameworks 中的默认函数接口
- ATL--创建简单的ATL之dll工程,给接口添加属性(实际上就是一个函数对)
- laravel5中添加自定义函数
- dedecms中添加自定义函数
- laravel5中添加自定义函数
- ATL 中增加双接口
- ATL中添加网页窗口
- 给ATL控件添加安全接口
- 给ATL ActiveX控件添加安全接口
- 用ATL实现在COM接口中返回另一个COM类的接口
- 在内核中添加函数
- C# WinForm多线程开发(一) Thread类库
- phpcmsv9安装企业黄页模块后,后台注册企业会员错误?
- 打包jar文件后的spring部署及hibernate自动建表经验总结
- VS 2010 C++调用R类库
- HTML5 标签简介(五)
- 在ATL接口中添加自定义函数
- 初学JAVA的一些问题。
- 面试题4
- MFC 如何设置鼠标的形状 如何设置光标热区
- 《圈圈教你玩USB》之 USB鼠标 描述符
- [Django笔记]二. web与web框架与Django
- Linux sort命令详解
- android 消息机制
- 面试题5