Создать программу Windows с графическим интерфейсом, но использовать main() (в D)?

Возможно ли в Windows создать программу с графическим интерфейсом, у которой есть точка входа в main()? Как мне это сделать?

Я использую это для того, чтобы я хотел кроссплатформенное приложение с единой точкой входа.

1 ответ

Решение
  1. Напишите ваше заявление, используя main() и все вызовы GUI там, что вы использовали бы в WinMain, Это создаст приложение с графическим интерфейсом и консольным окном.
  2. Используйте инструмент Windows SDK editbin /SUBSYSTEM:WINDOWS appname.exe изменить флаг подсистемы в заголовке PE, чтобы Windows не создавала окно консоли автоматически.
  3. Если вы хотите работать stdout для сообщения отладки или тому подобное, вы можете использовать freopen направлять stdout в файл, или AllocConsole когда вы решите, что нужно консольное окно (например, после возникновения ошибки).

Кстати: этот поток указывает, что компилятор DMD предпочтет main() над WinMain() во всяком случае, если он находит оба.

Другие вопросы по тегам