VARIANT rVal;
rVal.vt = VT_BSTR;
rVal.bstrVal = ::SysAllocString(L"hello");这样调用没错
::MessageBox(NULL, "result:" + (CString)rVal.bstrVal, "MsgBox", MB_SETFOREGROUND);但我想转换成LPCTSTR,却不行。
::MessageBox(NULL, "result:" + (LPCTSTR)rVal.bstrVal, "MsgBox", MB_SETFOREGROUND);不知哪位大虾能够指点一下。
rVal.vt = VT_BSTR;
rVal.bstrVal = ::SysAllocString(L"hello");这样调用没错
::MessageBox(NULL, "result:" + (CString)rVal.bstrVal, "MsgBox", MB_SETFOREGROUND);但我想转换成LPCTSTR,却不行。
::MessageBox(NULL, "result:" + (LPCTSTR)rVal.bstrVal, "MsgBox", MB_SETFOREGROUND);不知哪位大虾能够指点一下。
解决方案 »
- 编程中程序中类视图中只有CMainFrame了,其他的CXXXView,CXXXApp和CXXdoc,全都不见了?
- DirectxShow配置问题
- 我的电脑编译时提示用/MD,但同样的工程在别的电脑上就可以用/MTD,请问这是怎回事呀?
- 请问为什么exe没问题,但放到ocx中就出现问题?
- 让我郁闷了一个下午的问题,我始终无法理解 请前辈帮忙指点一下(程序很简单)在线等待
- 学习托盘图标的动态显示,请教教我
- 怎样得到线程ID号?
- 屏幕捕捉的问题
- 高手请看一看
- BHO插件中如何增加JS脚本以增加按钮?
- Dispatch 和 _RecordsetPtr之间的转换问题,在线等待。
- 如何删除一个贴子?为何CSDN给的提示是矛盾的?
所以你改成如下形式应该就行了
(LPCTSTR)(rVal.bstrVal+1)
需要#include "COMDEF.H"_variant_t t;
t.SetString ("fa");
CString str = (char *)(_bstr_t(t));
只能输出字符串中的第一个字符,不正确"result:" + (LPCTSTR)rVal.bstrVal
中间不能用加号
对了,但没达到我要的结果。需要#include "COMDEF.H"_variant_t t;
t.SetString ("fa");
CString str = (char *)(_bstr_t(t));
怎么改写我的那个程序,麻烦写详细一点
_variant_t t;
t.SetString ("hello");然后这样调用
CString str = (char *)(_bstr_t(t));
str = "result:" + str;::MessageBox(NULL, str, "MsgBox", MB_SETFOREGROUND);就可以了嘛.
VARIANT rVal;
rVal.vt = VT_BSTR;
rVal.bstrVal = ::SysAllocString(L"hello");而我想把它转换成char*,然后我要做一些字符串的拷贝,以及取子串操作。_variant_t aaa = new _variant_t(rVal);
char *bbb = (char *)(aaa);这样我试了一下,不行,麻烦指正
CString strMSG=_T("result:")+(CString)rVal.bstrVal
在显示strMSG
是我写错了。我问题的关键是,怎样将VARIANT 类型的字符串转换成char *类型的字符串。
strcpy(aaa, (LPCTSTR)((CString)getNotesString.bstrVal));多谢各位帮助。
如果要转为char * 可以用char *bbb = (char *)(_bstr_t(aaa));
就可以了嘛...就转出来了...