在win32项目的可视化过程中我遇到了这个问题,如果我这样做:
char temp[80]="hello";
进而:
MessageBox(hDlg,(LPCWSTR)temp,_T("titolo"),MB_OK);
结果是日文,有什么问题?谢谢。
在win32项目的可视化过程中我遇到了这个问题,如果我这样做:
char temp[80]="hello";
进而:
MessageBox(hDlg,(LPCWSTR)temp,_T("titolo"),MB_OK);
结果是日文,有什么问题?谢谢。
问题是 aLPCWSTR
是一个宽字符数组,而你有一个char
数组。
尝试:
wchar_t temp[]= L"hello";
Luchian给你基本的答案。
回到过去,当我开始开发 Windows 应用程序时,我什至不记得有 Unicode 版本的 Windows。只有多字节字符串。当您使用 Visual C++ 向导创建新应用程序时,它会创建一个应用程序,其中基本字符串字符是“char”。在那里的某个时候,微软预见到 Unicode 是要走的路,他们创建了名为TCHAR
,LPTSTR
和LPCTSTR
. 这些类型的编译方式不同,具体取决于您是否在项目中定义了“UNICODE”。如果您没有定义 UNICODE,则TCHAR
= char
、LPTSTR
=LPSTR
和LPCTSTR
= LPCSTR
。但是,如果您定义了 UNICODE,则TCHAR
= WCHAR
(或wchar_t
)、LPTSTR
=LPWSTR 和LPCTSTR
= LPCWSTR
。
我仍在开发的当前应用程序不是 UNICODE 应用程序,而是 MBCS(多字节字符串)。在未来的某个时候,我希望它最终会更改为 UNICODE。我一直试图做的是使用TCHAR
我的字符串的类型,以便将来我所要做的就是定义 UNICODE 并且我的所有字符串功能都可以工作。
话虽如此,TCHAR
如果您不知道是否定义了 UNICODE,也可以使用这些函数:
TCHAR temp[] = _T("hello");