void create(CString str)
{
BSTR s;
s=::SysAllocString(str);
CComPtr<IXMLDOMElement> e = NULL;
HRESULT hr = xmldoc.createElement(s,&e); //xmldoc是一个预先定义并实例化的CComPtr<IXMLDOMDocument>变量
}我调用create这个方法传L"AAA"进去能正确执行,直接声明一个CString变量并赋值传进来也能正确执行。但是我将调用CTreeCtrl::GetItemText(返回值是CString类型)方法获取的值传进去,hr就总是返回e_fail错误,纠结死了.....
{
BSTR s;
s=::SysAllocString(str);
CComPtr<IXMLDOMElement> e = NULL;
HRESULT hr = xmldoc.createElement(s,&e); //xmldoc是一个预先定义并实例化的CComPtr<IXMLDOMDocument>变量
}我调用create这个方法传L"AAA"进去能正确执行,直接声明一个CString变量并赋值传进来也能正确执行。但是我将调用CTreeCtrl::GetItemText(返回值是CString类型)方法获取的值传进去,hr就总是返回e_fail错误,纠结死了.....
如果是这样,那你先声明一个字符串变量,然后存储你那个CTreeCtrl::GetItemText的返回值,再传到 Create不就行了
Cstring stringA = CTreeCtrl::GetItemText();
Cstring stringB = _T("xxxx");
这两种传递进去看看行不行
void create(CString& str){ //注意参数 是引用类型
....
}
试试看