我正在编写一个wxWidgets GUI应用程序,但它也使用了一些控制台对象。
我需要一种显示标准输出和访问标准输入的方法;最好的方法是显示控制台和GUI。如果用户从命令提示符/ shell等运行程序,则可以执行此操作,但在运行应用程序时,命令提示符不会自动打开以查看stdout。
我知道这一定是可能的,因为当您运行控制台应用程序时,控制台会自动运行。我找到了一个或两个需要Windows API的解决方案,但遗憾的是我的代码需要跨平台(我在Linux上开发它)。
答案 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;
}