2010-03-16 15 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; 
}