在mfc中CString到LPWSTR

时间:2013-10-03 07:05:27

标签: c++ string visual-c++ unicode mfc

我正在以UNICODE模式构建我的应用程序并希望将CString转换为LPWSTR。基本上我有一个包含CString作为成员变量的类,如

class MyClass
{
   CString TreeNodeName;
}

我想使用以下结构将项目插入树控件,

TVINSERTSTRUCT tvInsert;
tvInsert.hParent = ParentNode;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.lParam = (long)ClassObject;
tvInsert.item.pszText = ClassObject->TreeNodeName;  //Need this conversion

请帮助我如何将 CString TreeNodeName; 转换为 tvInsert.item.pszText

1 个答案:

答案 0 :(得分:4)

除非我误解了这个问题,否则您只需将CString强制转换为LPCTSTR即可将其与Windows API函数一起使用。 See here for a description

因为TVITEM::pszText成员是LPTSTR,您需要再次强制转换为非const,但是对于TVM_INSERTITEM这样的操作应该是安全的,因为您提供的字符串未被修改

tvInsert.item.pszText = (LPTSTR)(LPCTSTR)ClassObject->TreeNodeName;