请问如何改变菜单的高度? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如何控制菜单的大小?(ZZ) 我用MFC的CMenu生成了一个动态菜单(例如File,Edit,View...Help), 我想控制这个菜单的大小(长+高).方法一:查找 WM_MEASUREITEM 和 MEASUREITEMSTRUCT.方法二:查询系统::GetSystemMetric(SM_CXMENUSIZE). /* 你可以通过如下代码来获得文本的大小: (A)获得被使用的字体 */ NONCLIENTMETRICS ncm; HFONT hFontMenu; SIZE size; size.cy = size.cy = 0; memset(&ncm, 0, sizeof(NONCLIENTMETRICS)); ncm.cbSize = sizeof(NONCLIENTMETRICS); if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0)) { hFontMenu = CreateFontIndirect(&ncm.lfMenuFont); /* (B) 获得菜单项的文本: */ char szText[_MAX_PATH]; pMenu->GetMenuString(0, szText, _MAX_PATH, MF_BYPOSITION); /* 然后,获得菜单项文本的高度: */ HFONT hFontOld; HDC hDC; hDC = ::GetDC(NULL); hFontOld = (HFONT) ::SelectObject(hDC, hFontMenu); GetTextExtentPoint32(hDC, szText, lstrlen(szText), &size); SelectObject(hDC, hFontOld); ::ReleaseDC(NULL, hDC); } /*此时,size.cy即为高度,size.cx为宽度,你可以给菜单加上自定义的高度和宽度,通过比较,我发现宽度为4比较合适。*/ 我是用的自绘菜单,在WM_MEASUREITEM时设高为100,菜单项的高的确变成了100,但是MenuBar的高还是以前的值,我看了几个模仿XP菜单的例子,它们的菜单也是默认的高度,而officeXP和VS.net的平板菜单比普通的菜单是要高几个像素的. 我用MFC的CMenu生成了一个动态菜单(例如File,Edit,View...Help), 我想控制这个菜单的大小(长+高).方法一:查找 WM_MEASUREITEM 和 MEASUREITEMSTRUCT.方法二:查询系统::GetSystemMetric(SM_CXMENUSIZE). /* 你可以通过如下代码来获得文本的大小: (A)获得被使用的字体 */ NONCLIENTMETRICS ncm; HFONT hFontMenu; SIZE size; size.cy = size.cy = 0; memset(&ncm, 0, sizeof(NONCLIENTMETRICS)); ncm.cbSize = sizeof(NONCLIENTMETRICS); if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0)) { hFontMenu = CreateFontIndirect(&ncm.lfMenuFont); /* (B) 获得菜单项的文本: */ char szText[_MAX_PATH]; pMenu->GetMenuString(0, szText, _MAX_PATH, MF_BYPOSITION); /* 然后,获得菜单项文本的高度: */ HFONT hFontOld; HDC hDC; hDC = ::GetDC(NULL); hFontOld = (HFONT) ::SelectObject(hDC, hFontMenu); GetTextExtentPoint32(hDC, szText, lstrlen(szText), &size); SelectObject(hDC, hFontOld); ::ReleaseDC(NULL, hDC); } /*此时,size.cy即为高度,size.cx为宽度,你可以给菜单加上自定义的高度和宽度,通过比较,我发现宽度为4比较合适。*/ sqlite 的问题 查询语句 给ListView列表视图每个项目和子项目加上边框的风格是什么? 请教:关于CListBox中关于鼠标点击事件的处理问题 哪里有VC++6.0英文版下载啊? WM_PAINT和WM_NCPAINT的区别 我们课程完了,这几天没有事情做,想做个小游戏,但是不知道做什么,请大家给点构思吧 picture控件如何清除上面画的东西?在线,急急急 请问在哪里下载dbgview??? 怎样在键盘钩子中,或得组合键。 对话框热键 调查:你考虑将来了吗?你买保险了吗? vc调用存储过程时,怎样传递参数
我用MFC的CMenu生成了一个动态菜单(例如File,Edit,View...Help), 我想控制这个菜单的大小(长+高).方法一:查找 WM_MEASUREITEM 和 MEASUREITEMSTRUCT.
方法二:查询系统::GetSystemMetric(SM_CXMENUSIZE). /* 你可以通过如下代码来获得文本的大小:
(A)获得被使用的字体 */ NONCLIENTMETRICS ncm;
HFONT hFontMenu;
SIZE size;
size.cy = size.cy = 0; memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
ncm.cbSize = sizeof(NONCLIENTMETRICS);
if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0))
{
hFontMenu = CreateFontIndirect(&ncm.lfMenuFont);
/*
(B) 获得菜单项的文本: */
char szText[_MAX_PATH]; pMenu->GetMenuString(0, szText, _MAX_PATH, MF_BYPOSITION);
/*
然后,获得菜单项文本的高度: */
HFONT hFontOld;
HDC hDC; hDC = ::GetDC(NULL);
hFontOld = (HFONT) ::SelectObject(hDC, hFontMenu);
GetTextExtentPoint32(hDC, szText, lstrlen(szText), &size);
SelectObject(hDC, hFontOld);
::ReleaseDC(NULL, hDC);
}
/*此时,size.cy即为高度,size.cx为宽度,你可以给菜单加上自定义的高度和宽度,通过比较,我发现宽度为4比较合适。*/
方法一:查找 WM_MEASUREITEM 和 MEASUREITEMSTRUCT.
方法二:查询系统::GetSystemMetric(SM_CXMENUSIZE).
/* 你可以通过如下代码来获得文本的大小:
(A)获得被使用的字体 */
NONCLIENTMETRICS ncm;
HFONT hFontMenu;
SIZE size;
size.cy = size.cy = 0;
memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
ncm.cbSize = sizeof(NONCLIENTMETRICS);
if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0))
{
hFontMenu = CreateFontIndirect(&ncm.lfMenuFont);
/*
(B) 获得菜单项的文本: */
char szText[_MAX_PATH];
pMenu->GetMenuString(0, szText, _MAX_PATH, MF_BYPOSITION);
/*
然后,获得菜单项文本的高度: */
HFONT hFontOld;
HDC hDC;
hDC = ::GetDC(NULL);
hFontOld = (HFONT) ::SelectObject(hDC, hFontMenu);
GetTextExtentPoint32(hDC, szText, lstrlen(szText), &size);
SelectObject(hDC, hFontOld);
::ReleaseDC(NULL, hDC);
}
/*此时,size.cy即为高度,size.cx为宽度,你可以给菜单加上自定义的高度和宽度,通过比较,我发现宽度为4比较合适。*/