Мой совет - полностью избегать TCHAR
(и связанных с ним функций).Их реальная цель состояла в том, чтобы позволить исходной кодовой базе компилироваться для 16-разрядных или 32-разрядных версий Windows, но 16-разрядные версии Windows давно ушли в прошлое, и вместе с ними появилась реальная причина для написания такого кода.
Если вы хотите / должны поддерживать широкие символы, сделайте это.Если у вас все в порядке только с узкими / многобайтовыми символами, сделайте это.По крайней мере, IME, попытка сесть на забор и выполнить некоторые из этих двух действий, как правило, означает, что в итоге вы не справляетесь ни с одним из них.Это также означает, что примерно вдвое объем необходимого тестирования не приближается даже к удвоению функциональности, которую вы предоставляете пользователю.