gpt4 book ai didi

c++ - C++-MFC-设置CMenu的高度

转载 作者:行者123 更新时间:2023-12-02 10:19:26 24 4
gpt4 key购买 nike

如果使用CMenu,是否可以设置高度?

我知道可以绘制一个自定义菜单项并在CMenu::MeasureItem中使用自定义大小,但是有没有一种方法可以设置/更改菜单(栏)本身的高度?

谢谢。

最佳答案

如果您的菜单栏来自CMFCMenuBar类*,则更改菜单栏的高度相对容易。在这种情况下,您只需要覆盖CalcLayout成员并在返回的.y对象的CSize成员中指定所需的高度。这是一个最小的示例:

// Class declaration...
class MyMenuBar : public CMFCMenuBar {
public: // Standard constructors and destructor ...
MyMenuBar(void) : CMFCMenuBar() {}
inline MyMenuBar(const MyMenuBar&) = delete;
inline MyMenuBar& operator = (MyMenuBar&) = delete;
virtual ~MyMenuBar(void) {}
protected: // Overrides for custom behaviour ...
CSize CalcLayout(DWORD dwMode, int nLength = -1) override;
};

// Implementation...
CSize MyMenuBar::CalcLayout(DWORD dwMode, int nLength)
{
CSize cs = CMFCMenuBar::CalcLayout(dwMode, nLength); // Call base-class to get width
cs.cy = 42; // Set this to your desired menu-bar height (in pixels)
return cs;
}

要使用这样的菜单栏,您只需要声明它为主框架窗口的成员,然后在处理该框架窗口的 WM_CREATE消息时创建它并设置其样式/属性即可(通常,在 MFC应用程序中,这将被 OnCreate()成员覆盖)。

注意:从理论上讲,您可以将此方法用于任何具有 CalcLayout成员的基类(例如 CMFCToolbar);但是, CMFCMenuBar类允许框架处理所包含菜单中的所有其他预期操作。

关于c++ - C++-MFC-设置CMenu的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60890367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com