How to understand LPCTSTR,
L Represents the long pointer, which is to comply with the 16-bit operating system such as Windows 3.1, in Win32, and other 32 for the operating system, the long pointer and NEAR pointer and FAR modifiers are for compatibility. There is no practical meaning.
P Represents this is a pointer
C is a constant
T In the Win32 environment, there is a _t macro, this macro is used to indicate if your character uses Unicode, if your program defines Unicode or other related macros, then this character or string will be used as a Unicode string, Otherwise it is a standard ANSI string.
STR indicates that this variable is a string.
Therefore, LPCTSTR represents a string that can change the semantic semantic in accordance with some macros.
Similarly, LPCSTR can only be an ANSI string, and we use the Type Type definition in the program.
LPCTSTR == const tchar *