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

时间:2012-08-28 03:38:11

标签: c++ windows user-interface console-application wxwidgets

我想编写一个C ++程序,以便根据配置文件可以是控制台应用程序或Window应用程序。对于GUI我正在使用WxWidget。我应该分别在Windows和Linux(Buntu)中做什么。

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

2 个答案:

答案 0 :(得分:1)

使用条件编译在编译阶段执行此操作非常简单。

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

#define GUI

#define CONSOLE

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

#include "gui_or_console.h"

最后,使用条件编译告诉编译器要处理哪些代码

#idfef GUI

  // some GUI code

#endif

#ifdef CONSOLE

 // some CONSOLE code

#endif

答案 1 :(得分:1)

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

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

如果从一个命令行启动(而不是启动自己的控制台窗口),真正困难的部分是附加到现有控制台窗口。 Devstudio通过使用devstudio.com和devstudio.exe来做到这一点,但是相当复杂。