Присоединение консоли с графическим интерфейсом в wxWidgets - PullRequest
4 голосов
/ 16 марта 2010

Я пишу приложение с графическим интерфейсом wxWidgets, но оно также использует некоторые консольные объекты.

Мне нужен способ отображения стандартного вывода и доступа к стандартному вводу; лучший способ сделать это - отобразить консоль и графический интерфейс. Это можно сделать, если пользователь запускает программу из командной строки / оболочки и т. Д., Но командная строка не открывается автоматически для просмотра стандартного вывода при запуске приложения.

Я знаю, что это должно быть возможно, потому что когда вы запускаете консольное приложение, консоль запускается автоматически. Я нашел одно или два решения, которые требуют Windows API, но, к сожалению, мой код должен быть кросс-платформенным (я разрабатываю это для Linux).

Ответы [ 3 ]

2 голосов
/ 16 марта 2010

Решение очень простое: используйте wxStreamToTextRedirector . Это позволяет перенаправлять вывод консоли на текстовый элемент управления. Вы можете создать для этого отдельное окно и раскрасить его, чтобы оно выглядело как консоль. Ссылка выше предоставляет пример.

1 голос
/ 15 марта 2014

При использовании Code :: Blocks в свойствах проекта в разделе «Цели сборки» есть возможность построить проект как консольное приложение. При выборе этого варианта приложение будет работать с подключенной консолью.

0 голосов
/ 10 августа 2015

WxWidgets имеет макросы (wxIMPLEMENT_APP_CONSOLE, wxIMPLEMENT_APP) для отображения консоли (или нет). Кажется, работает нормально, вы можете выбрать правильный макрос в зависимости от ваших определений препроцессора.

class MyApp: public wxApp
{
    public:
        virtual bool OnInit();
};

#ifdef _DEBUG
wxIMPLEMENT_APP_CONSOLE(MyApp);
#else
wxIMPLEMENT_APP(MyApp);
#endif


bool MyApp::OnInit()
{

    MainWindow *frame = new MainWindow( TOOLNAME, wxPoint(50, 50), wxSize(600,400) );
        frame->Maximize();
...
    return true;
}
...