Есть проект в Radasm+masm32 работающий через GUI. Нужно в том же проекте сделать поддержку командной строки, выполнить вывод текста в командную строку. Одновременно в линкере использовать /SUBSYSTEM CONSOLE и WINDOWS у меня не получается. Как это можно сделать?
Можно собрать консольное приложение и насоздавать окон как сказали в #3 Либо можно собрать GUI приложение и выделить консоль через AllocConsole, а потом писать туда через WriteConsole
Ну так поддержка командной строки предусмотрена в GUI, вызываешь GetCommandLine и обрабатываешь, переданный аргумент или-же, UNICODE вариант CommandLineToArgvW
JCronos В таком случае GetCommandLineA\GetCommandLineW и CommandLineToArgv же. vg Ещё хинт: /subsystem:windows AttachConsole(ATTACH_PARENT_PROCESS) failed? -> AllocConsole()
Clerk Не сложно, просто раньше не сталкивался. JCronos Я так и делаю для определения того, в каком режиме запущена прога (через GUI или командную строку). Не получалось выводить. GUI + AllocConsole() то, что нужно. Ещё один смежный вопрос. При выводе кириллицы получаются кракозяблики. Это можно как-нибудь исправить?
В консоли и GUI используются разные кодовые страницы -- так сложилось исторически. Поэтому кодировка русских символов различается. Умеет ли ось автоматом переводить юникод в правильную однобайтовую кодировку и для гуя, и для консоли, я не знаю, но это всегда можно сделать самому.
vg Либо хранить строки в исходнике в dos-кодировке, либо сменить кодовую страницу консоли, либо пользоваться юникодом, либо преобразовывать свои строки в dos-кодировку перед выводом в консоль.
никак. меняй кодовую страницу и все. SetConsoleOutputCP - по памяти, может немного ошибся в названии.
http://ufmod.sf.net/ утилита eff имеет гуево-консольный интерфейс, распространяется с исходниками http://ufmod.svn.sourceforge.net/viewvc/ufmod/Win32/Eff/