繁体   English   中英

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

[英]C++ - MFC - Set height of CMenu

如果是CMenu是否有任何设置高度的选项?

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

谢谢。

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

// 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类允许框架处理包含菜单中的所有其他预期操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM