gpt4 book ai didi

winforms - 如何在 Win Api 中创建现代菜单?

转载 作者:行者123 更新时间:2023-12-04 06:21:03 26 4
gpt4 key购买 nike

现代菜单是指使用 MFCWindows Forms(MenuStrips) 制作的菜单。我知道这是可能的,因为我已经看到一些使用它的应用程序是在 Windows Api 中开发的。它也在 Win32++ 库 中完成,并且 MFC 和 WinForms 只是 Win Api 包装器,因此如果它们包含现代菜单,Win Api 也必须包含它们。但我的问题是...如何直接在 Windows Api 中制作菜单条?它是否包含在 CommonControls 中?还是我必须自己实现?如果是这样,那又如何?需要示例代码,但不是必需的。

菜单有点像这样

enter image description here

最佳答案

MFC 和 Winforms 使用非常相似的方法来实现这些自定义菜单。他们从 ToolBar/ToolStrip 类中的通用支持开始,然后专门针对菜单栏/项目类。

您将在 vc/atlmfc/src/mfc 中找到 MFC 实现。 afxtoolbarxxx.cpp 源代码文件大约有 24,000 行 C++ 代码。菜单类特化位于 afxmenuxxx.cpp,另外几千行源代码。

您可以从引用源中获取 Winform 类的源代码。 ToolStripxxx.cs 源代码文件大约有 40,000 行 C# 代码。菜单类特化在 Menuxxx.cs 中,另外几千行源代码。

两者都使用了各自框架中提供的大量支持类,包括窗口包装器和图像/文本渲染支持等基本内容。很难猜测他们吸收了多少。

像这样的数字大约超出了大多数程序员认为可以重写自己的数量级。您当然可以通过削减功能来做得更好,MFC 和 Winforms 实现都有很多花里胡哨的东西。 Winforms 更是如此,这是它拥有如此多源代码的基本原因。然而,添加这种功能支持的目的是提供一个您可以使用而不是尝试替换的类库。推荐。

关于winforms - 如何在 Win Api 中创建现代菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6562286/

26 4 0