尽管 Windows NT 3.1支持基本的 Unicode,但仍然支持代码页
对于包含在系统中的许多更高级别的应用程序和组件仍然是必需的,这解释了 Win32 API 的“ A”[ ANSI ]版本而不是“ W”[“ wide”或 Unicode ]版本的普遍使用。(用于表示 Windows 代码页的术语“ ANSI”是一个历史参考,但现在仍然是一个在 Windows 社区中持续存在的错误名称。其来源是 Windows 代码页1252最初是基于 ANSI 草案,后来成为 ISO 标准8859-1。然而,在增加代码指向为 ISO 标准中的控制代码保留的范围时,Windows 代码页1252和随后的 Windows 代码页最初基于 ISO 8859-x 系列偏离了 ISO。时至今日,微软内外的开发社区将8859-1代码页与 Windows 1252混为一谈并不罕见,还有“ ANSI”或“ A”用来表示对 Windows 代码页的支持
LPTSTR lptstr = (LPCTSTR) string; // CString provide this operator overload
现在 LPTSTR 可以进一步类型转换为 LPSTR:)
dispinfo.item.pszText = LPTSTR( lpfzfd); // accomplish the cheat :P
从‘ CString’中获取 LPTSTR的正确方法是这样的(完整的例子) :
CString str = _T("Hello");
LPTSTR lpstr = str.GetBuffer(str.GetAllocLength());
str.ReleaseBuffer(); // you must call this function if you change the string above with the pointer