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