将Win32菜单栏添加到预先存在的GUI

时间:2016-12-30 01:27:51

标签: c++ winapi menubar

菜单在许多应用程序中非常流行:

Example

我已经阅读了很多主题,并且已经学会了如何为你的gui添加一个菜单栏:

//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

首先你的WNDCLASSEX结构上的RegisterClassEx有一个名为" lpfnWndProc"的属性。它指向调用DispatchMessage时要调用的函数。然后你实际创建菜单栏。最后,设置一个调用GetMessage的循环,如果收到消息,它将转换并分派它,有效地调用lpfnWndProc函数。

我想知道你是否可以用现有的gui做到这一点。例如,控制台应用程序。我知道我可以轻松设置菜单栏,但处理输入对我来说似乎很难。

Console Application w/ Menu Bar Added

我有一个调用GetMessage的循环,但它似乎没有输入任何输入。 更多信息:

  • 我用旧的副本(从GetClassInfoEx实现)覆盖当前的WNDCLASSEX(RegisterClassEx),唯一的修改是" lpfnWndProc"功能(以不同方式处理输入)。
  • 重写似乎是成功的,我只是没有从GetMessage函数中获取任何输入(我点击按钮等)。

关于如何做到这一点的任何帮助?

0 个答案:

没有答案