Вы можете попробовать это прямо сейчас.
Определить как WinMain, так и wWinMain и скомпилировать его как статическую библиотеку.
Создать новый проект для исполняемого файла exe.
Задать настройку набора символов UNICODE system. (Определить _UNICODE)
Связать только что созданную статическую библиотеку.
Затем ваша программа запускается из WinMain.
Является ли набор символов многоБайт или юникод, WinMain вызывается, когда определены и WinMain, и wWinMain.
Это происходит только при определении WinMain в статической библиотеке.
Когда вы определяете WinMain и wWinMain в исходном проектев том числе, он работает правильно,
системные вызовы Unicode wWinMain и многобайтовые системные вызовы WinMain.
Почему это происходит?