如何编写一个C ++控制台窗口程序

我想写一个C ++程序,使得根据一个configuration文件可以是一个控制台应用程序或窗口应用程序。 对于我使用WxWidget的GUI。 我应该在Windows和Linux(Buntu)中分别做些什么。

有人可以提供一些简单的例子?

在编译阶段要做到这一点很简单,使用条件编译。

你的配置文件将包含你想要的预处理器定义。 例如

 #define GUI 

要么

 #define CONSOLE 

然后,将配置文件包含在每个要编译的文件中

 #include "gui_or_console.h" 

最后,你使用条件编译来告诉编译器处理哪个代码

 #idfef GUI // some GUI code #endif #ifdef CONSOLE // some CONSOLE code #endif 

在运行时执行此操作的典型方法是编译并将您的程序作为Windows应用程序链接。 在运行时你阅读配置。 如果它是为GUI设置的,那么创建窗口,并在你的路上。 如果它被设置为控制台模式,那么你可以创建一个控制台窗口,将stdout / stdin / sterr流添加到它,然后离开你。

我写了一个这样运行的程序。 整个UI被抽象为纯虚拟接口,具体的实现提供了一个控制台实现和一个GUI实现。 在运行时,我实例化正确的类型。 构造函数使窗口的类型正确。 主程序然后调用一个虚拟的Run方法。 控制台实现调用main的等价物。 GUI实现运行一个事件循环。

如果你从一个命令行启动(而不是启动你自己的控制台窗口),那么真正困难的部分是附加到现有的控制台窗口。 Devstudio通过拥有一个devstudio.com和devstudio.exe来完成这个工作,但是它相当复杂。