Its because LPTSTR
could be LPSTR
or LPWSTR
considening project UNICODE settings. When unicode is enabled application use LPWSTR
, if not LPSTR
.
LPSTR
is just an alias for char*
. LPWSTR
- wchar_t*
. T
in LPTSTR
mean TCHAR
type which defenition can be char
or wchar_t
whatever UNICODE
or _UNICODE
symbol is defined in your project.
LP
means "long pointer", long is 32 bit memory address. STR
- string.
So lets describe LPSTR
- "long pointer to ANSI string"; LPWSTR
- "long pointer to wide character string" and LPTSTR
- "long pointer to TCHAR
string".
To W
or T
letter can be added prefix C
like LPCSTR
, LPCTSTR
, LPCWSTR
wich means that these pointers are constant like const char*
or const wchar_t*
.
So your code must look like:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
TCHAR* szCmdLine = lpCmdLine;
...
}
or
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
LPTSTR szCmdLine = lpCmdLine;
...
}