我想在树节点上显示的文字是属性@DispName的内容,可是我的程序却不能加载XML文件中的汉字信息,不知道是什么原因?各位大哥大姐帮忙看看:
BOOL CProjectSystemTreeDialog::BuildTree(CDragDropTreeCtrl &treeCtrl,CString TreePath)
{
if(FAILED(::CoInitialize(NULL))) 
return false; 
HRESULT hr = S_OK;
try
{
MSXML2::IXMLDOMDocument2Ptr pdocument = NULL;
MSXML2::IXMLDOMParseErrorPtr pparseError = NULL;
MSXML2::IXMLDOMElementPtr pelement = NULL;
MSXML2::IXMLDOMNodeListPtr pnodes = NULL;
MSXML2::IXMLDOMNodePtr pnode = NULL;
pdocument.CreateInstance(__uuidof(MSXML2::DOMDocument));//创建实例
pdocument->load(_variant_t(TreePath));//加载并解析xml文件
pelement = pdocument->documentElement;//取得xml的root
pnodes = pelement->selectNodes((_bstr_t)"//@DispName");
long len=pnodes->length;//取得子节点的个数
HTREEITEM root;
pnode = pelement->selectSingleNode((_bstr_t)"//@DispName");
root = treeCtrl.AddItem(TVI_ROOT,(LPCTSTR)(pnode->text),NULL,0,0,0);
for (long i=1;i<len;i++)
{
pnode=pnodes->item[i];
RepeatFindNodes(treeCtrl,pnode,root);
}
treeCtrl.SelectItem(root);
treeCtrl.Expand(root, TVE_EXPAND);
}
catch (_com_error pCome)
{
TRACE("Error info: %s \n", (LPCTSTR)(_bstr_t)(pCome.Description()));
TRACE("Error info: %s \n", (pCome.ErrorMessage()));
return false;
}
::CoUninitialize();
return true;
}void CProjectSystemTreeDialog::RepeatFindNodes(CDragDropTreeCtrl &treeCtrl,MSXML2::IXMLDOMNodePtr pNode,HTREEITEM pParent)
{
if (pNode->hasChildNodes() == VARIANT_TRUE)
{
HTREEITEM parentTemp = treeCtrl.AddItem(pParent,(LPCTSTR)(pNode->text),TVI_LAST,0,0,0);
MSXML2::IXMLDOMNodeListPtr pnodes=pNode->childNodes;
long len=pnodes->length;
for (long i=0;i<len;i++)
{
IXMLDOMNodePtr pchildNode=pnodes->item[i];
RepeatFindNodes(treeCtrl,pchildNode,parentTemp);
  }
}
else
{
treeCtrl.AddItem(pParent,(LPCTSTR)(pNode->text),TVI_LAST,0,0,0);
}
}