【问题标题】:Attaching the console with the GUI in wxWidgets在 wxWidgets 中使用 GUI 附加控制台
【发布时间】:2011-01-28 06:17:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ console wxwidgets


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-21
          • 1970-01-01
          相关资源
          最近更新 更多