typedef WCHAR TCHAR;
typedef WCHAR *PTCHAR;
typedef WCHAR PTSTR; //Which I think is a typo. You probably meant *PTSTR.
You use TCHAR when declaring chars or arrays of chars for use with the generic Windows API functions, and you use PTCHAR and PTSTR (corrected as above) whenever you need pointers to arrays of generic chars.