VC++ 使用attributes定义接口

 

1.定义预处理命令_ATL_ATTRIBUTES

image

2.在一个全局的Cpp文件里面配置module的attribute

[module(dll, uuid = "{3845951F-15B8-4286-8E7D-E9D4F5C7B6CE}", name = "TestApp")]

3.定义接口

[object,uuid("9F414A8A-1D5E-4aff-A60E-CFD65155ABB6"),dual, helpstring("IGFCursorMgr Interface"),pointer_default(unique)
]
__interface IEmployee : IDispatch
{HRESULT DoWork(BSTR bstrTask);
};[coclass,default(IEmployee),threading(free),vi_progid("TXGF.CGFCoCursorMgr"),progid("TXGF.CGFCoCursorMgr.1"),version(1.0),uuid("20BB9542-E499-4618-9E2D-079A06FD99B1"),helpstring("CGFCoCursorMgr Class")
]
class ATL_NO_VTABLE CManager:public IEmployee
{
public:CManager(){//InternalAddRef();}DECLARE_PROTECT_FINAL_CONSTRUCT()HRESULT FinalConstruct(){return S_OK;}void FinalRelease(){}HRESULT DoWork(BSTR bstrTask){CComObject<CManager> * pObj = NULL;CComObject<CManager>::CreateInstance(&pObj);return S_OK;}
};

4.引用ATL命名空间

如遇编译错误error C3358: 'IDispatchImpl': symbol not found

需要添加ATL的命名空间using namespace ATL;

 

关于使用的参考资料:http://msdn.microsoft.com/en-us/magazine/cc301337.aspx

      The generated code in Figure 6 shows that the [coclass] attribute makes the compiler derive a class from CComObjectRootEx<> and this provides QueryInterface through the interface map. The compiler generates this map by looking at the interfaces that the class is derived from. If you want to add your own entries to this map, you can use the [com_interface_entry()] attribute. The parameter to this attribute is the COM_INTERFACE_ENTRY macro that you want to add to the top of the map. For example:

转载于:https://www.cnblogs.com/Clingingboy/p/3407293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Knockout.Js案例一Introduction

在这第一个教程中,您将体验的一些基本知识构建的web UI Model-View-ViewModel使用knockout.js(MVVM)模式。案例1&#xff1a;添加:data-bind <p>First name: <strong data-bind"text:firstName">1</strong></p><p>Last name: <stro…

谷歌浏览器外贸版_做外贸快两个月,没有单怎么办?

Hello 大家好&#xff0c;我是Jack。今天给大家更新一篇在知乎看到的外贸问题&#xff1a;做外贸快两个月&#xff0c;没有单怎么办?外贸这个话题在知乎算是小众话题了&#xff0c;相比较于职场&#xff0c;英语学习&#xff0c;国际政治&#xff0c;IT等&#xff0c;这些话题…

React Native通信机制详解

http://blog.cnbang.net/tech/2698/ React Native是facebook刚开源的框架&#xff0c;可以用javascript直接开发原生APP&#xff0c;先不说这个框架后续是否能得到大众认可&#xff0c;单从源码来说&#xff0c;这个框架源码里有非常多的设计思想和实现方式值得学习&#xff0c…

excel打开2个独立窗口_谢楠称女性独立的不是钱是心 谢楠与吴京婚后生育2个儿子...

近日&#xff0c;在综艺节目《幸福三重奏》 三日谈妻子篇中&#xff0c;谢楠被问到如何看待独立女性时&#xff0c;反问记者会不会问吴京同样的问题&#xff1b;随后回答道&#xff0c;女性独立的不是钱&#xff0c;而是你的心&#xff1b;楠姐的回答超级霸气了&#xff0c;你们…

Linux学习 Unit 9

Unit9.openssh-server1.openssh-server功能&#xff1a;让远程主机可以通过网络访问sshd服务&#xff0c;开始一个安全shell2.客户端连接方式ssh远程主机用户远程主机ip[rootdesktop0 ~]# ssh root172.25.0.11The authenticity of host 172.25.0.11 (172.25.0.11) cant be esta…

KMP模板与讲解

读书笔记终于写完了&#xff0c;写一下我对KMP的理解。 KMP的思想就是尽量利用已经得到的信息&#xff0c;来降低时间复杂度&#xff0c;已经得到的信息存放在next数组里。算法确实很难理解&#xff0c;所以很难讲解。。举个例子来说吧。 设字符串是str[]&#xff0c;next[5] …

android 非root app 捕捉系统广播_APP的生死之道

这篇文章主要介绍APP在安卓系统中是怎么被杀死的&#xff0c;按照怎样的一个策略去释放进程&#xff1b;同时介绍一些延长应用存活时间的方案&#xff0c;虽然这个在现在安卓系统上越来越难实现了&#xff0c;但是也是可以稍微了解下&#xff0c;主要也是通过这些hack的方案更好…

@value 静态变量_面试官:为什么静态方法不能调用非静态方法和变量?

这个可能很多人之前学习jvm的时候都会遇到&#xff0c;属于一个小问题&#xff0c;写这篇文章的原因是我在看java相关的面试题目中遇到的&#xff0c;因此顺手总结一下&#xff1a;一、例子我们先看效果&#xff1a;我们在静态方法main中调用非静态变量或者是方法都会报错。我们…

Memcached 工作原理

http://hzp.iteye.com/blog/1872664Memcached处理的原子是每一个&#xff08;key&#xff0c;value&#xff09;对&#xff08;以下简称kv对&#xff09;&#xff0c;key会通过一个hash算法转化成hash-key&#xff0c;便于查找、对比以及做到尽可能的散列。同时&#xff0c;mem…

ad中电容用什么封装_用什么来降低噪声?只要几个电容器就可以,简单有效!...

使用电容器降低噪声噪声分很多种&#xff0c;性质也是多种多样的。所以&#xff0c;噪声对策(即降低噪声的方法)也多种多样。在这里主要谈开关电源相关的噪声&#xff0c;因此&#xff0c;请理解为DC电压中电压电平较低、频率较高的噪声。另外&#xff0c;除电容外&#xff0c;…

C#委托的介绍(delegate、Action、Func、predicate)

委托是一个类&#xff0c;它定义了方法的类型&#xff0c;使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数&#xff0c;至多32个参数&#xff0c;可以无返回值&#xff0…

版本1.8.1Go安装以及语法高亮配置

注意点&#xff1a;普通用户和root用户高亮要设置两遍①下载go安装包 https://golang.org/doc/ 最新的版本&#xff1a;go1.8.1.linux-amd64.tar.gz ②进入主目录&#xff1a;$:su ~赋给普通用户root权限&#xff0c;以便执行tar命令&#xff1a;$:su root 把压缩包解压到/usr/…

flutter 自定义键盘_入门级机械键盘选购对比

个人觉得键盘这种东西&#xff0c;手感是最重要的&#xff0c;毕竟键盘是要拿用的&#xff0c;不是拿来供的。不管键盘再怎么好看、酷炫&#xff0c;只要你用起来不舒服、不习惯&#xff0c;那对你而言&#xff0c;就不会是一把好键盘。那么&#xff0c;影响手感的因素主要有哪…

四个好看的CSS样式表格

1. 单像素边框CSS表格 这是一个非经常常使用的表格样式。 源码&#xff1a; <!-- CSS goes in the document HEAD or added to your external stylesheet --> <style type"text/css"> table.gridtable { font-family: verdana,arial,sans-serif; font-si…

loading initial ramdisk 卡住_驿站晨读 | 一城市多家快递“卡住了”!有快递网点直接建议:换别家吧......

编辑&#xff1a;驿站老鬼 主播&#xff1a;若晨‍▎美团回应“外卖小哥致电取餐被打成颅脑损伤”10月15日晚&#xff0c;成都温江区某小区内发生一起顾客殴打外卖员事件&#xff0c;导致外卖员冯某东轻度颅脑损伤以及右膝外侧半月板撕裂。据了解&#xff0c;事件起因是顾客要…

JavaScript大神用代码带你揭秘吉普赛古老神秘读心术

javascript/HTML5课题&#xff1a;javascript开发读心术游戏PS:大爆料&#xff01;javascript解密读心术游戏背后故事知识点&#xff1a;读心术原理算法独家揭秘&#xff0c;HTML5最新选择器&#xff0c;原生javascript动态DOM生成&#xff0c;判断与循环讲解&#xff0c;函数封…

.NET Framework 4.5 五个很棒的特性

转自http://news.cnblogs.com/n/192958/ 英文原文&#xff1a;Five Great .NET Framework 4.5 Features 简介 自 .NET 4.5 发布已经过了差不多 1 年了。但是随着最近微软大多数的发布&#xff0c;与 .NET 开发者交流的问题显示&#xff0c;开发者仅知道一到两个特性&#xff0c…

group by很多字段是不是会很慢_女生回复我总很慢,怎么办?

原标题&#xff1a;女生回复我总很慢&#xff0c;怎么办&#xff1f;Hello&#xff0c;大家好&#xff0c;我是情圣老司机。有一种问题&#xff0c;可能属于年轻人才会遇到的问题年轻的兄弟总想控制一切&#xff0c;一切都掌控在自己手上包括今天这个主题&#xff1a;女生总是回…

BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)

裸的线段树...因为数组开小了而一直RE..浪费了好多时间..--------------------------------------------------------------------------#include<cstdio>#include<algorithm>#include<cstring>#include<cctype>#include<iostream>#define rep(i…

如何利用循环代替递归以防止栈溢出(译)

摘要&#xff1a;我们经常会用到递归函数&#xff0c;但是如果递归深度太大时&#xff0c;往往导致栈溢出。而递归深度往往不太容易把握&#xff0c;所以比较安全一点的做法就是&#xff1a;用循环代替递归。文章最后的原文里面讲了如何用10步实现这个过程&#xff0c;相当精彩…