在INSIDE ATL书中看到在IDL中如下定义的一个COM方法:
HRESULT GetNextTip([in, out] VARIANT* pvCookie,
[out, retval] BSTR* pbstrText);使用时如下调用:
CString& strNext
strNext = (BSTR)(m_tipOfDay->GetNextTip(&vtCookie));不明白为什么可以这样调用?请大家帮着看一看,先谢了。
解决方案 »
- ListView.InsertItem; ListView.SetItem
- 为何我派生的 CWnd 子类create后接收不到 MouseMove 等消息?
- 在线程中创建一个非模式对话框...
- [请问]如何显示多行的tooltip?
- 我这样读excel文件,判断有几个sheet为何错?
- 请问vc中如何取得硬盘信息,在线等待
- 请教:如何象Windows附近的画图程序那样画矩形?主要有两个问题:1.是背景透明,2是拖动的时候没有闪烁感,很流畅!
- 推荐一款网站管理系统:网站快车给大家
- 高分請教DWG,DWF文件的非控件顯示方法.
- "cannot open file "libcd.lib“这是什么?
- 如何用VC++调用在网页中编写的Javascript语言?
- 怎样画出有颜色的线条?
[out,retval]代表传出参数
{
HRESULT hr;
BSTR bstr;
hr = GetNextTip(pVariant,&bstr);
if (hr)
return bstr;
else
{
//错误处理
......
} }
然后定义m_tipOfDay并使用你的代码:
CMyWrapClass m_tipOfDay; CString& strNext;
strNext = (BSTR)(m_tipOfDay->GetNextTip(&vtCookie)); 事实上这里的强制转换(BSTR)是多余的。 建议你检查一下代码的上下文,是不是类似我说的这样。