[英]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.