在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*);就通过了,虽然至今不知为什么,但也算是一个解决方案了

有朋友遇到的话可以试一下



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3个月宝宝不便便怎么办 宝宝8个月不便便怎么办 宝宝在幼儿园不爱说话怎么办 广东学考考了d怎么办 上嘴唇干燥紧绷怎么办 美国大学gpa非常低怎么办 大学手机作弊通报教务处怎么办 崩坏3邮箱验证码过期怎么办 快递员被顾客恶意投诉怎么办 5岁幼儿逻辑思维差怎么办 脸一边胖一边瘦怎么办 夏天穿鞋子脚痒怎么办 脚痒怎么办但不是脚气 脚气脚趾缝烂了怎么办 凉鞋穿久了臭怎么办 运动鞋穿久了臭怎么办 体恤穿久了发臭怎么办 十七八岁青少年逆反心理怎么办 挨刚煮好的粥烫伤改怎么办? 5e的demo有水印怎么办 宝宝湿疹激素一停药复发怎么办 木工家装没事做怎么办 取票之后票丢了怎么办 补牙咬合低了点怎么办 留学生上美国网课上不了网怎么办 大四绩点不够2.0怎么办 ucas申请成绩下来后怎么办 在本校读研毕业东西怎么办 美国硕士gpa低于3.0怎么办 英国t4签证拒签怎么办 abc洗液过敏了怎么办 护士电子化注册忘记用户名怎么办 手机重力感应坏了怎么办 电脑所有驱动都删除了怎么办 毕业生没有签工作档案怎么办 澳洲两年工作签怎么办 上班一年没签劳动合同怎么办 公司拖欠工资怎么办没签劳动合同 brp丢了怎么办回国补 被怀疑假结婚该怎么办 中考作弊被捉了怎么办