Добавление строки меню Win32 в существующий графический интерфейс

Меню довольно популярны во многих приложениях:

пример

Я прочитал много тем и узнал, как добавить строку меню в ваш графический интерфейс:

//Pseudocode

//..RegisterClassEx

HMENU Menu = CreateMenu();
HMENU Tools = CreateMenu();

AppendMenu(Menu, MF_POPUP, (UINT_PTR)Tools, L"Tools");
AppendMenu(Tools, MF_STRING, 1, L"Test");
SetMenu(hwnd_to_gui, Menu);

//...
//..GetMessage
//..TranslateMessage
//..DispatchMessage

Сначала вы регистрируете RegisterClassEx в своей структуре WNDCLASSEX, которая имеет свойство с именем «lpfnWndProc», которое указывает на функцию, вызываемую при вызове DispatchMessage. Затем вы фактически создаете строку меню. Наконец, вы устанавливаете цикл, который вызывает GetMessage, и, если сообщение получено, оно будет транслировать и отправлять его, эффективно вызывая функцию lpfnWndProc.

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

Консольное приложение с добавленной строкой меню

У меня есть цикл, который вызывает GetMessage, однако он, кажется, не принимает ввода.
Дополнительная информация:

  • Я перезаписываю текущий WNDCLASSEX (RegisterClassEx) копией старого (полученного из GetClassInfoEx) с единственной модификацией, которая является функцией «lpfnWndProc» (для обработки ввода по-другому).
  • Кажется, что перезапись прошла успешно, я просто не получаю никаких данных из функции GetMessage (я нажимаю кнопки и т. Д.)

Любая помощь о том, как я буду делать это?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]