2010-03-16 26 views
4

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

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

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

+0

它适合你吗? – Qwerty 2013-03-13 18:25:08

回答

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; 
}