2010-03-16 6 views
4

Я пишу приложение wxWidgets GUI, но оно также использует некоторые объекты консоли.Прикрепление консоли с GUI в wxWidgets

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

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

+0

Это работало для вас? – Qwerty

ответ

2

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

1

Если вы используете Code :: Blocks, в свойствах проекта в объектах Build Targets есть возможность построить проект в качестве консольного приложения. При выборе этого приложения приложение будет подключено к консоли.

0

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; 
} 
Смежные вопросы