如果 a 有没有设置高度的选项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
该类允许框架处理包含菜单中的所有其他预期操作。