> memset(szPath,'\0',MAX_PATH);
And if TCHAR isn't a char, then you'll need one of
memset(szPath,'\0',MAX_PATH * sizeof TCHAR );
memset(szPath,'\0',MAX_PATH * sizeof szPath[0] );
memset(szPath,'\0',sizeof szPath );
Focus on the bit about "all-bits-zero". In other words, don't rely on memset giving you valid floats or pointers, if you try the same approach on attempting to clear more complex data types.