Можно ли встроить командную строку в приложение win32? - PullRequest
7 голосов
/ 18 октября 2011

В linux, при установке пакетов и т. Д. Есть некоторые установщики, которые имеют индикатор выполнения и окно dos, в котором отображаются извлекаемые файлы и т. Д. Как я могу добавить это окно в мои программы на C ++ Win32, чтобы оно отображалось задачи, которые я делаю? Я не могу найти какую-либо документацию по MSDN.

Вопрос : Как я могу добавить консольное окно (если оно так и называется, оно выглядит точно так же) в моей программе, чтобы показать подробную информацию о выполняемой задаче

Вот окно с тем, что я спрашиваю .. (личная информация, поэтому я стер детали):]

enter image description here

Ответы [ 4 ]

7 голосов
/ 18 октября 2011

Вы не можете встроить реальное консольное окно в другое окно (хотя оконный процесс может иметь отдельное консольное окно). Хотя это выглядит как консольное окно / командная строка, это всего лишь вопрос внешнего вида. Что вы хотите сделать, это создать подокно / элемент управления с характеристиками, подобными окну консоли, а затем перенаправить вывод консоли из запускаемых приложений для добавления в это подокно. Для получения дополнительной информации о том, как сделать перенаправление вывода консоли в Windows, см. http://support.microsoft.com/kb/190351.

3 голосов
/ 18 октября 2011

Это «окно окна» является обычным элементом редактирования: CreateWindow(ES_MULTILINE, EDIT, ... Однако для него установлен шрифт с фиксированной шириной (выглядит как курьер).Это делается путем отправки WM_SETFONT в элемент управления для редактирования.

2 голосов
/ 18 октября 2011

@ user995048 говорит: «Вы не можете встроить реальное консольное окно в другое окно».Но «не могу» - это сильное слово!Я могу запустить весь виртуальный компьютер в окне, если захочу.:) Таким образом, можно вполне разумно понять, что есть способы делать то, что вы говорите.

Конечно, это правда, что то, что вы видели, это почти наверняка случаи перенаправления вывода в пользовательский виджет, предназначенный для имитациипростой внешний вид терминала.Однако ... если вы хотите встроить окно одного приложения в другое, есть вещи, которые вы можете посмотреть, которые могут подойти.Существуют кооперативные методы, такие как GtkPlug, например:

http://developer.gnome.org/gtk/2.24/GtkPlug.html

На самом деле захватить окно приложения, не предназначенного для сотрудничества, и добавить его в ваше приложение было бы сложнее.Но возможно, так же, как возможны снимки экрана и виртуальные машины.Вероятно, лучше всего избегать такого рода вещей, если только для этого нет особой причины ...

0 голосов
/ 18 октября 2011

Попробуйте это http://www.codeguru.com/cpp/misc/misc/article.php/c277/ ссылка на сайт. Я думаю, что предоставленное решение - то, что вам нужно. Я попробовал это много лет назад, и это сработало. Я не пробовал это в более новых версиях Windows, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...