2012-04-09 126 views
0

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

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

任何建议,如果这是可能的?谢谢!

+0

是否有任何理由不考虑命令行参数? – yasouser 2012-04-09 01:37:22

+1

@yasouser我正在考虑给用户一个GUI,这样控制台程序的输入参数可以比请求用户输入一些错误输入的命令行参数更清晰? – user990639 2012-04-09 02:03:34

回答

3

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

反过来也是如此:一个GUI应用程序也可以创建一个控制台并输出给它。

1

快速和肮脏的方式 - 在任何你想要的工具包(例如Qt,Gtk,Windows API等)中创建GUI并使用标准system(const char *)函数。

Nmap是一个非常有意思的话题,因为many front ends存在,因此您可能会对挖掘源代码感兴趣,以了解它们如何使控制台应用程序成为前端。

1

控制台应用程序通常使用文本文件进行配置,以便它们可以在批处理脚本中运行而无需用户交互。配置文件可以用参数指定。

一旦你有了这个,编写GUI配置编辑器和启动器就很简单了。一个监视器程序可能最好做成一个通知区域图标,当过程终止或控制台输出中出现某些东西时,它将会报告。

0

我在GUI上实现一个进程的方式(当我不幸没有考虑包含GUI的设计时),就是使用posix线程进程,一个运行应用程序的代码,一个用于GUI ,用父进程(父进程运行两个子进程)的全局变量(hacky)以单向方式(以避免竞争条件出现),所以一个变量将写入进程,读取GUI以及另一个变量将读取进程,写入GUI。

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

这不是真正的最佳方式(这很不方便),而且GUI应该从开始就设计到代码中,而不是稍后“粘贴”。但是这对我来说确实有效,而且在最后一分钟的额外时间内,GUI的表现令人惊讶。