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,这是一篇很好的文章,虽