将GUI添加到c ++ win32控制台

时间:2012-04-09 01:25:05

标签: c++ user-interface console

我有一个现有的C ++ win32控制台应用程序。该应用程序包含一个主程序,可以实时连续处理硬件中的某些数据,并具有服务器组件(线程)以将数据流式传输到客户端。

我在考虑是否可以为用户创建一个GUI,以便在运行此控制台程序之前输入一些程序参数。 GUI我打算仅显示控制台程序的状态,例如。运行后,用户单击“开始”按钮后不需要用户交互。

是否可以提供任何建议?谢谢!

4 个答案:

答案 0 :(得分:3)

当然,只需创建一个window message loop的线程就可以了。这可能需要一个单独的线程来描述您所描述的内容,尽管可以设想其他方式,具体取决于您现有代码的具体细节。

对于converse也是如此:GUI应用程序也可以创建一个控制台并输出它。

答案 1 :(得分:1)

快速而肮脏的方式 - 在您希望的任何工具箱中创建GUI(例如Qt,Gtk,Windows API ......)并使用标准system(const char *)功能。

Nmap是一个很棒的主题,因为many front ends存在,所以你可能有兴趣深入挖掘源代码,看看它们如何成为控制台应用程序的前端。

答案 2 :(得分:1)

通常使用文本文件配置控制台应用程序,以便可以在没有用户交互的情况下从批处理脚本运行它们。可以使用参数指定配置文件。

一旦有了这个,就可以直接编写GUI配置编辑器和启动器了。监视程序最好放入通知区域图标,该图标将在进程终止或控制台输出中出现某些内容时进行报告。

答案 3 :(得分:0)

我实现GUI流程的方式(当我遗憾地没想到包含GUI的设计时)是使用posix线程进程,一个用于运行应用程序的代码,一个用于GUI,由父进程共享的全局变量(hacky)(父进程运行两个子进程)(以避免竞争条件出现),因此一个变量将为进程写入,为GUI读取,另一个将为进程读取,为GUI编写。

我不得不重新写入处理系数以使用忙等待(坏)等待信息并且状态改变为在每个忙等待循环之间跳转。繁忙的等待状态变化并没有太多实施。

这不是真正的最佳方式(这非常hacky),并且应该从一开始就将GUI设计到代码中,而不是稍后“添加”。但是这确实对我有用,并且GUI在最后一分钟的时候做得非常好。