COM接口实现:IFACEMETHODIMP 与 STDMETHODIMP 的区别与注意点

IFACEMETHODIMP 和 STDMETHODIMP 在COM接口函数实现中通常可互换使用,但IFACEMETHODIMP包含了"__override"关键字,允许SAL进行重写检查。在ATL中,IFACEMETHODIMP应用于所有接口方法的实现,而STDMETHODIMP用于非ATL实现的接口成员。两者没有性能差异,但在支持IFACEMETHODIMP的情况下,推荐使用IFACEMETHODIMP。
摘要由CSDN通过智能技术生成

IFACEMETHODIMP 与 STDMETHODIMP 都是Visual C++的宏,专门用于Windows编程,作为COM接口函数实现的定义与声明的前缀,用法是相同的。以下是 IFACEMETHODIMP 使用的一个例子:

IFACEMETHODIMP GetThumbnail(UINT, HBITMAP*, WTS_ALPHATYPE*);

IFACEMETHODIMP GetThumbnail(UINT cx, HBITMAP *phbmp, WTS_ALPHATYPE *pdwAlpha)
{
	//实现代码
}

以上代码中,有时你可以用 STDMETHODIMP 来代替 IFACEMETHODIMP,效果不变。接下来的内容是重点:既然效果相同,存在两个宏意义何在(区别到底在哪儿)?何时该使用 STDMETHODIMP,何时又该使用 IFACEMETHODIMP?


如果你使用ATL,IFACEMETHODIMP 与 STDMETHODIMP 的区别一定要弄清楚。很可惜,在网上进行初步搜索,往往搜到的只是 IFACEMETHODIMP 或 STDMETHODIMP 的应用代码示例。早期的代码中可以见到 STDMETHODIMP 的使用(例如The Complete Idiot's Guide to Writing Shell Extensions,这是一篇很好的文章,虽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值