0

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

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

有什么建议吗?谢谢!

4

4 回答 4

3

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

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

于 2012-04-09T01:37:46.893 回答
1

快速而肮脏的方式 - 在您希望的任何工具包中创建 GUI(例如 Qt、Gtk、Windows API...)并使用标准系统(const char *)函数。

Nmap 是一个很棒的话题,因为存在许多前端,所以你可能有兴趣深入研究源代码,看看它们是如何将前端变成控制台应用程序的。

于 2012-04-09T01:48:54.237 回答
1

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

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

于 2012-04-09T02:04:20.067 回答
0

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

我不得不重新编写处理 coe 以使用忙等待(坏)来等待信息和状态更改以在每个忙等待循环之间跳跃。忙碌等待状态的改变并没有花费太多时间来实现。

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

于 2012-08-27T19:44:39.153 回答