教你看懂C++类库函数定义之二---STDMETHOD介绍
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:http://code.google.com/p/duilib/
废话不多说,我比较困扰的是UIWebBrowser.h这个头文件,虽然是C++写的,但里面包含太多大学C++课本以外的东西,第一遍看下来跟看天书一样,里面有很多的不惑,接下来我们一个一个解开。
首先看一下这个函数定义:
virtual HERSULT STDMETHODCALLTYPE GetTypeInfoCount( __RPC__out UINT *pctinfo);
这一篇详细介绍 STDMETHODCALLTYPE
STDMETHOD_是一个宏,用于定义指定返回类型的接口方法,包含virtual关键字。可用于定义方法声明。#define STDMETHOD_(type,menthod) virtual type STDMETHODCALLTYPE menthod 例如: STDMETHOD_ (ULONG, release)()展开后就是 virtual ULONG STDMETHODCALLTYPE release() STDMETHODCALLTYPE 宏展开是 __stdcall。
#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
#define STDMETHODCALLTYPE __stdcall
这样当写一个函数STDMETHOD(op1(int i))
展开后成为: virtual HRESULT __stdcall op1(int i);
这样就这义了一个虚函数op1。当然了这个虚函数只能放在接口定义中了。
所以STDMETHOD宏是用于定义接口用的。放在头文件中用。
当要在CPP中实现这个方法时就用到另一个宏STDMETHOD
#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
#define STDMETHODCALLTYPE __stdcall
这样CPP文件中,STDMETHODIMP(op1(int i))就展开为:
HRESULT __stdcall op1(int i);
其实用这些宏只不过为了省了一些打字的时间而已。
教你看懂C++类库函数定义之二---STDMETHOD介绍的更多相关文章
- 教你看懂C++类库函数定义之三---_stdcall
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...
- 教你看懂C++类库函数定义之一---HRESULT 宏
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...
- 教你看懂Code128条形码
首 页 条码控件 条码技术 条码新闻 合作伙伴 联系我们 常见问题 电话:010-84827961 当前位置:条形码控件网 > 条形码控件技术文章 > >正文 教你看懂C ...
- 看懂c/c++ 函数、指针、数组定义
读懂 函数 + 指针 + 数组 c语言运算符机器优先级,看这里 结合运算符优先级,我们试着读懂函数和指针 优先级简单看 表达式提升():一级优先 函数():二级优先 数组[]:二级优先 指针定义*:三 ...
- emmm 深入浅出教你看懂现代金融游戏
3303只信仰公平[网易陕西省西安网友]1 比特币是骗人的.你们都被“现代帼家纸币”概念茜脑了,而且茜的很彻底,所以你们看不透比特币的骗局.简单来说,现代纸币是“空气纸”,比特币是“空气币(空气数据) ...
- 教你看懂网上流传的60行JavaScript代码俄罗斯方块游戏
早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用C写一个功能基本齐全的俄罗斯方块的话,大 ...
- 教Alexa看懂手语,不说话也能控制语音助手
Alexa.Siri.小度……各种语音助手令人眼花缭乱,但这些设备多是针对能力健全的用户,忽略了听.说能力存在障碍的人群.本文作者敏锐地发现了这一 bug,并训练亚马逊语音助手 Alex 学会识别美式 ...
- 手把手教你看懂并理解Arduino PID控制库——引子
介绍 本文主要依托于Brett Beauregard大神针对Arduino平台撰写的PID控制库Arduino PID Library及其对应的帮助博客Improving the Beginner’s ...
- 教你看懂邮件头信息<转载>
MIME对于邮件系统的扩展是巨大的,因为在MIME出现以前,信件内容如果要包括声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息 ...
随机推荐
- 在linux中限制用户ftp访问权限
1.环境:redhat linux企业版4.ftp为vsftp.被限制用户名为aaa.被限制路径为/bbb.2.建用户:在root用户下,相继进行如下操作 adduser aaa ...
- OpenCV学习 5:关于平滑滤波器 cvSmooth()函数
原创文章,欢迎转载,转载请注明出处 本节主要了解下cvSmooth函数的一些参数对结果的影响.从opencv tutorial中可以看到这样一段话: 像我这样的数学渣,还是看下图来得形象: 高斯滤波器 ...
- Linux----mktemp命令的用法
命令说明: mktemp命令用于临时文件和临时目录.它的主要特点就是可以做到每次执行mktemp时产生文件和目录都不重名: 这个特性就保证了多个session执行同一脚本都是安全的. 命令用法: 格式 ...
- stormzhang的推荐!
欢迎转载,但请务必在明确位置注明出处!http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/ QQ交流群:入群理由请正确 ...
- UltraISO制作U盘系统安装盘(图文教程)
虽然现在的系统盘做的越来越傻瓜化,安装方法也非常多,但是仍然时常有朋友询问怎么安装系统,特别是没有刻录机或不想刻盘,又不懂硬盘安装的朋友,这里特别介绍一种用U盘来安装系统的方法,非量产,量产因U盘芯片 ...
- C++ string实现原理
C++程序员编码过程中经常会使用string(wstring)类,你是否思考过它的内部实现细节.比如这个类的迭代器是如何实现的?对象占多少字节的内存空间?内部有没有虚函数?内存是如何分配的?构造和析构 ...
- Http 请求头中的 Proxy-Connection
平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...
- javascript函数的基础功能
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- CSliderCtrl鼠标点击精确定位
实现CSliderCtrl的子类CXXCtrl 响应左键按下消息 ON_WM_LBUTTONDOWN() void CXXCtrl::OnLButtonDown(UINT nFlags, CPoint ...
- 《windows程序设计》学习_4.1:计时器(可用于扫雷)
为了做一个逼真的扫雷,我的扫雷程序的位图都是从windowsXP下面的扫雷里来的.具体是怎么获取位图的呢?win8.1不给力,习惯了vc++6.0,所以虚拟机里装上了xp,用vc++6.0加载扫雷程序 ...