MFC对话框程序怎么改变“主菜单”的高度

MFC对话框程序如何改变“主菜单”的高度
本帖最后由 VisualEleven 于 2014-03-04 11:43:49 编辑
参考过往的帖子来自绘菜单形式,目前的问题是:下拉菜单的字体和高度(行间距)均可调节、主菜单的字体大小也可以调节,但是:就是主菜单的高度调整不了,请指教。
目前做法如下(参考别人的帖子)
1.派生自CMenu的子类CMyMenu,头文件声明:
class CMyMenu : public CMenu
{
public:
CMyMenu();
virtual ~CMyMenu();
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
public:
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
virtual void ChangeMenuItem(CMenu *pMenu);

};

2.成员函数定义
void CMyMenu::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{

CRect rect = lpDrawItemStruct->rcItem;
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.FillSolidRect(rect,RGB(0,0,0));
CFont Font;
Font.CreatePointFont(105,"Calibri");//创建字体
dc.SelectObject(&Font);
CString *pText=(CString *)lpDrawItemStruct->itemData;
dc.SetTextColor(RGB(255,255,255));//设置文本颜色
dc.DrawText(*pText,rect,DT_VCENTER|DT_LEFT|DT_SINGLELINE);
dc.Detach();
}

void CMyMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight=25;//项高
lpMeasureItemStruct->itemWidth=183;//项宽

}
void CMyMenu::ChangeMenuItem(CMenu *pMenu)
{
int itemCount=pMenu->GetMenuItemCount();
for(int i=0;i<itemCount;i++)
{
CString *pText=new CString;
UINT itemID=pMenu->GetMenuItemID(i);//获取菜单项ID号
pMenu->GetMenuString(i,*pText,MF_BYPOSITION);//获取菜单文本
if (*pText == "CSA")
{
comment1 = *pText;
}

//ModifyMenu函数最后一个参数对应DRAWITEMSTRUCT结构里的itemData变量
pMenu->ModifyMenu(i,MF_OWNERDRAW|MF_BYPOSITION|MF_STRING,itemID,(LPSTR)pText);
if(itemID==-1)//如果是一个弹出式菜单
{
ChangeMenuItem(pMenu->GetSubMenu(i));
}
}  
}

3.在Dlg.cpp的OnInitDialog()函数中:
        m_Menu.LoadMenu(IDR_MENU1);//加载菜单
SetMenu(&m_Menu);          //加载菜单 
m_Menu.ChangeMenuItem(&m_Menu);//改变菜单格式

问题:
如何改变主菜单的高度(非下拉菜单),thanks.
------解决方案--------------------
能否用一排按钮来代替他们吗?
------解决方案--------------------
如果要求较多能不能考虑所有菜单都自己画,还可能实现更多的风格。
------解决方案--------------------
如果要灵活,只能自己画菜单等,这样可以灵活控制
------解决方案--------------------
自绘比较灵活,。