簡體   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