2012-04-09 5 views
0

У меня есть консольное приложение C++ win32. Это приложение содержит основную программу, которая непрерывно обрабатывает некоторые данные с аппаратного обеспечения в реальном времени и имеет серверный компонент (поточный) для потоковой передачи данных клиентам.Добавление GUI в консоль win32 C++

Я думаю, что если вы можете создать графический интерфейс для пользователей, чтобы ввести некоторые параметры программы, прежде чем запускать эту консольную программу. GUI я намерен показывать статус консоли, например. если пользователь не нажмет кнопку «Пуск», взаимодействие с пользователем не потребуется.

Советуйте, если это возможно? Благодаря!

+0

Есть ли причина, по которой вы не рассматриваете параметры командной строки? – yasouser

+1

@yasouser Я имею в виду предоставить пользователю графический интерфейс, чтобы входные параметры в консольную программу были более четкими, чем запрос пользователю ввести некоторые параметры командной строки, в которых они могут ошибочно вводить? – user990639

ответ

3

Абсолютно, просто создайте нить с window message loop, и все готово. Для этого, вероятно, потребуется отдельный поток для описания, хотя можно было бы представить другие способы, в зависимости от точных данных вашего существующего кода.

То же самое верно и для обратного: приложение GUI также может создавать консоль и выводить на нее.

1

Быстрый и грязный способ - создать графический интерфейс в любом инструментарии, который вы хотите (например, Qt, Gtk, Windows API ...) и использовать стандартную функцию system(const char *).

Nmap - замечательная тема, потому что существуют many front ends, так что вам может быть интересно вникнуть в источники, чтобы увидеть, как они сделали интерфейс в консольном приложении.

1

Это типично для консольных приложений, которые должны быть сконфигурированы с использованием текстового файла, чтобы их можно было запускать из пакетного скрипта без взаимодействия с пользователем. Конфигурационный файл может быть задан параметром.

Как только вы это сделаете, просто написать графический редактор и панель запуска GUI. Программа монитора, вероятно, лучше всего превращается в значок области уведомлений, который будет сообщать, когда процесс завершается или что-то появляется на выходе консоли.

0

Способ, которым я реализовал процесс для графического интерфейса (когда я, к сожалению, не думал о дизайне с включением графического интерфейса), должен был использовать процесс, созданный в стиле posix, один для запуска кода для приложения и один для графического интерфейса , с глобальными переменными (хаки), разделяемыми родителем (родительский управлял двумя дочерними процессами) односторонним образом (чтобы избежать возникновения состояния гонки), поэтому одна переменная будет писать для процесса, читать для графического интерфейса пользователя, а другая будет прочитан для процесса, напишите для GUI.

Мне пришлось перезаписать коэффициент обработки, чтобы использовать ожидание ожидания (плохое), чтобы дождаться, пока информация и состояние перейдут на пересылку между каждым циклом ожидания занятости. Изменение состояния занятого ожидания не потребовало слишком многого для реализации.

Это не самый оптимальный способ (это было очень тяжело), ​​и графический интерфейс должен быть сконструирован в коде с самого начала, а не позже включен. Но это работало для меня, и графический интерфейс на удивление хорошо показал последнюю минуту.

Смежные вопросы