我正在尝试创建一个(非常)简单的Win32 GUI程序,但由于某种原因,编译器(我使用的是VC++ 2008 Express)希望我手动将每个字符串或char*强制转换为LPCWSTR:
我每次执行此操作时都会收到此编译器错误,例如,我为"Hello"和"Note"收到此错误:
错误C2664:'MessageBoxW':无法将参数2从'const char [22]'转换为'LPCWSTR'
请告诉我,每次我这样做都不需要施展......
这是代码:
#includeint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello", "Note", MB_OK); return 0; }
Stefan.. 14
VS2008中新项目的默认设置是构建UNICODE感知应用程序.您可以更改该默认值并返回使用ANSI或MBCS应用程序(属性 - >配置属性 - >常规 - >字符集),或使用这样的Unicode字符串:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, L"Hello", L"Note", MB_OK); return 0; }
不要不投你的字符串LPCWSTR,因为这会导致不确定的行为!char与wchar_t不同!
VS2008中新项目的默认设置是构建UNICODE感知应用程序.您可以更改该默认值并返回使用ANSI或MBCS应用程序(属性 - >配置属性 - >常规 - >字符集),或使用这样的Unicode字符串:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, L"Hello", L"Note", MB_OK); return 0; }
不要不投你的字符串LPCWSTR,因为这会导致不确定的行为!char与wchar_t不同!