При использовании Windows API (почти) каждое объявление со строкой, заканчивающейся нулем, использует TCHAR
, LPTSTR
и LPCTSTR
, которые определяются как char
, char*
и const char*
, когда вы не здание с UNICODE в качестве набора символов
и определяются как wchar_t
, wchar_t*
и const wchar_t*
при сборке с набором символов UNICODE.
Кроме того, определения UNICODE
и / или _UNICODE
определяют, какая функция компилируется при вызове функции windows-API. Почти каждая функция имеет две версии: одну для UNICODE и одну для не-UNICODE.
например, MessageBox переводится либо в MessageBoxA (не UNOCODE-версия), либо в MessageBoxW (UNOCDE-версия).
Дальше больше:
int WINAPI WinMain ( HINSTANCE hInstance ,HINSTANCE hPrevInstance ,LPSTR lpCmdLine, int nCmdShow )
{
// ...
}
часто определяется как:
int WINAPI _tWinMain ( HINSTANCE hInstance ,HINSTANCE hPrevInstance ,LPTSTR lpCmdLine ,int nCmdShow )
{
// ...
}
для последней версии вам нужно включить <tchar.h>
, который имеет правильный перевод для _ tWinMain
(или _ tmain
при сборке consle-app).
Надеюсь, это что-то искажает для вас.