2012-09-09 109 views
3

我有一个wxWidgets GUI程序,并且我希望标准控制台窗口附加到标准输出/ etc。要去。wxWidgets图形用户界面+控制台/模拟控制台(wxTextCtrl?)

如果有人知道如何做到这一点(GUI应用程序和一个控制台窗口),这将是出色的。但是,从环顾四周,我怀疑这不是直接可能的。

基于this similar thread,我觉得这可以用wxTextCtrl在单独的wxFrame中进行模拟。如果这是一个很好的方法,那么有没有例子可以在任何地方完成?还有其他方法可以做到这一点吗?

编辑:我期待要么有(或至少尽可能接近地模拟)控制台窗口 - 因此,黑背景,白色字符具有固定宽度的字体,等等

回答

1

可以例如重定向std::coutwxTextCtrl使用wxStreamToTextRedirector,但它并不真正代替Windows下的实际控制台或Unix下的PTY,因为只有通过std::cout输出的文本将被重定向,但不会使用printf()或任何其他功能打印任何内容。如果你需要后者,你需要做一些平台特定的事情,在这种情况下,你应该告诉你使用哪个平台,以及你需要做什么。

+0

是的,我确实需要printf(...)。实际上,我想要做的就是让一个“控制台”与非GUI程序中提供的控制台尽可能无法区分。 – imallett

+1

为此,您需要使用Windows下的普通控制台,但无法模拟它。只需在连接时将您的应用程序设置为一个控制台(/ subsystem:console),并且不要脱离它。请注意,您仍然可以在“控制台”应用程序中使用GUI类,而不会有任何问题。 –

+0

在控制台模式下创建时,我总是得到“未解析的外部符号_main”? – imallett

1

我推荐从stdout升级到wxWidgets日志记录类,这种方式更加灵活。 Here is an overview.

+0

有没有使用这些类来模拟控制台的例子? – imallett

+0

几个示例应用程序使用日志记录类。他们不会“模仿”一个控制台 - 重点是他们比控制台更好,更灵活。仔细使用样式,背景颜色和字体,可以使日志窗口看起来像您希望的控制台一样。 – ravenspoint

+0

随着wxLogWindow我能够得到一些工作,但我找不到一种方法来定制它看起来像控制台。 – imallett