Your error message is Unicode-related. For every Windows function that deals with strings, there are actually two functions - one that uses ASCII strings (each character is 1 byte wide) and one that uses wide strings (each character is 2 bytes wide). The Win32 API functions typically have an 'A' or 'W' at the end of the name (like 'MessageBoxW').
The problem here is that your build environment appears to be configured to use Unicode, so all the Windows functions like MessageBox are automatically being aliased to their Unicode equivalents, like MessageBoxW. You're therefore trying to pass a string with ASCII characters (declared something like "stringgoeshere") into a function that takes a wide-character string (declared like L"stringgoeshere").
You could just put an 'L' in front of all your strings to force them to use wide characters, but there's a better solution. Windows has a data type called a 'TCHAR' you can use for strings, which is automatically converted into either ASCII or wide characters when you compile, depending on whether or not the _UNICODE preprocessor flag is set. All you have to do is include tchar.h, enclose your literal strings with the _T() or _TEXT() macros, and use the TCHAR data type whenever declaring string variables.
Code:
#include <tchar.h>
...
// This is a string of 256 characters (ASCII or wide)
TCHAR szText[256];
...
// _T and _TEXT do the same thing
MessageBox(NULL, _T("Hello!"),
_TEXT("Hello World"), MB_OK | MB_ICONINFORMATION);
If you plan to use standard string functions (like strcpy, strcmp, etc.) there are TCHAR equivalents (like _tcsncpy and _tcsncmp) that will be converted to the appropriate function by the preprocessor at compile time - just look them up in tchar.h.