Можно ли добавить пользовательские элементы управления в окно консоли? Вы можете использовать GetConsoleWindow()
чтобы получить дескриптор окна, а затем добавить свои собственные пункты меню или использовать все его события. Однако я не могу найти примеров людей, добавляющих дополнительные элементы управления.
Я разрабатываю небольшое, высокопроизводительное последовательное приложение. Это консольное приложение - RichTextBox
работает слишком медленно и имеет проблемы, которые делают его непригодным для эмуляции терминала VT100.
Я хочу добавить немного графики, чтобы показать состояние последовательных линий управления (RTS/CTS/DTR/RI и т.д.) И, возможно, кнопку включения/выключения захвата. В идеале я хотел бы добавить их в заголовок окна. Растровые изображения - все, что требуется.
После многих исследований я обнаружил, что это нелегко или даже возможно на самом деле.
Вы можете добавлять элементы управления в окно с помощью CreateWindow(), но, конечно, только в области клиента, которая полностью обрабатывается текстовым полем консоли. Тем не менее, вы можете, по крайней мере, создать плавающие элементы управления таким образом, которые наведите курсор на текст, чтобы предоставить информацию о состоянии и т.д.
Вы можете поместить элементы управления в границы окна, но только с некоторыми хаками в XP или с новым API, который был представлен с Vista. Проблема с этим API заключается в том, что он требует, чтобы вы нарисовали свой собственный значок программы и текст заголовка, а консольное окно, похоже, не справляется с этим очень хорошо.
Вы не можете добавлять свои собственные пункты меню, потому что окно консоли не передает сообщения.
В конце я использовал функциональные клавиши для всего и дал индикацию состояния, изменив значок окна консоли.