在wxWidgets中使用GUI附加控制台

时间:2010-03-16 18:30:24

标签: c++ console wxwidgets

我正在编写一个wxWidgets GUI应用程序,但它也使用了一些控制台对象。

我需要一种显示标准输出和访问标准输入的方法;最好的方法是显示控制台和GUI。如果用户从命令提示符/ shell等运行程序,则可以执行此操作,但在运行应用程序时,命令提示符不会自动打开以查看stdout。

我知道这一定是可能的,因为当您运行控制台应用程序时,控制台会自动运行。我找到了一个或两个需要Windows API的解决方案,但遗憾的是我的代码需要跨平台(我在Linux上开发它)。

3 个答案:

答案 0 :(得分:2)

解决方案非常简单:使用wxStreamToTextRedirector。这允许将控制台输出重定向到文本控件。您可以为此创建一个单独的窗口,并将其着色为看起来像一个控制台。上面的链接提供了一个示例。

答案 1 :(得分:1)

如果在Build Targets下的项目属性中使用Code :: Blocks,则可以选择将项目构建为控制台应用程序。选择它将使应用程序在连接控制台的情况下运行。

答案 2 :(得分: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;
}