Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++ Builder] Переключение между GUI и консолью


Автор: AkFirm 18.6.2007, 17:39
Знает ли кто-нибудь каким образом осуществить переключение между GUI и консолью, в зависимости от наличия параметров при запуске программы?
пробовал поставить условие ParamCount=0, в главном модуле, в функции WinMain,
но значение переменной ParamCount не изменяется даже при наличии параметров (т.е не происходит инициализации). 
 И еще хотелось бы узнать каким образом можно осуществлять работу с консолью (ввод вывод),
при этом не создавая ее(без AllocConsole()). Т.е чтобы вывод происходил в ту же консоль, откуда запущена программа.

Автор: Rockie 21.6.2007, 22:59
Цитата

53. FAQ o Win API 
Q> Как в GUI приложении открыть консоль и назначить stdin,stdout,stderr?

 
Код

#include <windows.h> 
#include <stdio.h>
#include <io.h>
#include <fcntl.h>

BOOL CreateConsole(void)
{
  FreeConsole();        //на всякий случай
  if ( AllocConsole() )
   {
     int hCrt = _open_osfhandle((long)
     GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
     *stdout = *(::_fdopen(hCrt, "w"));
     ::setvbuf(stdout, NULL, _IONBF, 0);
     *stderr = *(::_fdopen(hCrt, "w"));
     ::setvbuf(stderr, NULL, _IONBF, 0);
     return TRUE;
    }return FALSE;
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine, int nCmdShow)
{
CreateConsole();
printf("WinMain with Console test\n");

MSG msg;
    while (GetMessage(&msg, NULL,  0, 0))
    {
       TranslateMessage(&msg);
       DispatchMessage(&msg); 
    }
   return TRUE;
}



Цитата(AkFirm @  18.6.2007,  17:39 Найти цитируемый пост)
И еще хотелось бы узнать каким образом можно осуществлять работу с консолью (ввод вывод),при этом не создавая ее(без AllocConsole()).

Не думаю что есть "невидимая" консоль(какой вопрос такой ответ, чувствуется, да? smile )


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)