I’m trying to create a (very) simple Win32 GUI program, but for some reason the compiler (I’m using VC++ 2008 Express) wants me to manually typecast every string or char* to LPCWSTR:
I get this compiler error every time I do this, for example I get this error for the ‘Hello’ and ‘Note’:
error C2664: ‘MessageBoxW’ : cannot convert parameter 2 from ‘const char [22]’ to ‘LPCWSTR’
Please tell me I don’t have to cast every time I do this….
Here’s the code:
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, 'Hello', 'Note', MB_OK); return 0; }
The default for new projects in VS2008 is to build UNICODE aware applications. You can either change that default and go back to using ANSI or MBCS apps (Properties->Configuration Properties->General->Character Set), or use Unicode Strings like this:
Do not cast your strings to LPCWSTR because that will lead to undefined behavior! A char is not the same as a wchar_t!