Изменение высоты строки меню относительно легко, если ваша строка меню получена из 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;
}
Чтобы использовать такую панель меню, вам нужно только объявить ее как элемент окна основного фрейма, а затем создать ее и установить ее стиль / свойства при обработке * Сообщение 1009 * для этого окна фрейма (обычно в приложениях MFC
это будет в переопределении элемента OnCreate()
).
Примечание. Теоретически вы можете использовать этот метод с любым базовый класс, который имеет член CalcLayout
(например, CMFCToolbar
); однако класс CMFCMenuBar
позволяет платформе обрабатывать все другие ожидаемые действия из содержащегося меню.