我正在为我的一个uni项目构建MFC C ++应用程序,不幸的是,MFC只允许您使用SetWindowTextW()
方法,参数为LPCTSTR
?不是string
或CString
,对于我的生活,我无法找到如何将我的字符串转换为LPCSTR
值。
我的代码是:
pBorrowedBookCEdit1->SetWindowTextW(/* INSERT LPCTSTR HERE */);
String来自一个完全独立的对象。
如果有另一种方法将文本传递给MFC中的CEdit
对象,那么请告诉我=)
非常感谢任何帮助。
干杯。
答案 0 :(得分:1)
假设你手边有std::string
,你的问题含糊其辞,并进一步假设你正在构建一个Unicode应用程序,也模糊地指出,那么你可以做到
CString mfc_string( s.c_str() );
// Use mfc_string here.
其中s
是std::string
。
MSDN Library中记录了CString
构造函数。
查阅文档通常是个好主意。
背景:LPCTSTR
是一个扩展为char const*
或wchar_t const*
的宏,具体取决于在包含UNICODE
时是否定义了符号<windows.h>
。它是一种兼容性的东西,用于在Windows 9x中编写可能有效的代码,并且功能和可靠性大大降低。除非您定位Windows 9x,否则请忘记它,不要使用T
宏内容。
T
宏在2000年已经过时了,当时微软推出了Layer for Unicode,它允许Unicode应用程序在Windows 9x中运行(功能略有减少)。
2014年,在目标平台消亡很久之后,他们仍然用于非遗留代码,恕我直言,证明了整合的极端力量和自我可持续性。