社区
界面
帖子详情
OWNERDRAW菜单文字宽度问题
softrain
2005-07-22 04:57:08
我在messureitem消息中设置ITEM的宽度,如果文字有中文,背景宽度总是远大于文字宽度。
如何解决?
我这样调用:GetTextExtentPoint(dc,pItem->ch,strlen(pItem->ch),&sz);
...全文
218
9
打赏
收藏
OWNERDRAW菜单文字宽度问题
我在messureitem消息中设置ITEM的宽度,如果文字有中文,背景宽度总是远大于文字宽度。 如何解决? 我这样调用:GetTextExtentPoint(dc,pItem->ch,strlen(pItem->ch),&sz);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
softrain
2005-08-01
打赏
举报
回复
为什么要设置字体后计算出来的字体扩展长度才正确呢?请两位到这个帖子解答,本帖结了。
http://community.csdn.net/Expert/TopicView3.asp?id=4180771
这个帖子分少了,我在新帖子给两位再补点分。
吹泡泡的小猫
2005-08-01
打赏
举报
回复
需要设置
softrain
2005-08-01
打赏
举报
回复
字体是默认的,没有专门设置字体。
softrain
2005-08-01
打赏
举报
回复
改了还是不行
HDC dc= GetDC( hWndBackGround_ ) ;
SIZE sz;
GetTextExtentPoint(dc,pItem->ch,strlen(pItem->ch),&sz);
ReleaseDC( 0, dc );
MSItem->itemWidth = sz.cx;
MSItem->itemHeight = sz.cy + 2;
goodboyws
2005-08-01
打赏
举报
回复
楼上说的对
我是这么用的
void CMenuOwnerDraw::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
//改变菜单的大小
HDC hdc; // handle to screen DC
SIZE size; // menu-item text extents
HFONT hfontOld; // handle to old font
hdc = GetDC(NULL);
MENOWNERDRAWUINFO* lpMenuInfo = (MENOWNERDRAWUINFO*)lpMeasureItemStruct->itemData;
hfontOld = (HFONT)SelectObject(hdc, m_MenuOwnerDraw.hFont);
GetTextExtentPoint32(hdc, lpMenuInfo->szText,
_tcslen(lpMenuInfo->szText), &size);
lpMeasureItemStruct->itemWidth = size.cx+20;
lpMeasureItemStruct->itemHeight = size.cy+8;
SelectObject(hdc, hfontOld);
ReleaseDC(NULL, hdc);
}
吹泡泡的小猫
2005-08-01
打赏
举报
回复
调用GetTextExtentPoint之前要把字体先select到dc,得到长度之后加一个10到20象素的余量
softrain
2005-08-01
打赏
举报
回复
HDC dc= GetDC( 0 ) ;
pItem->ch的数据是在创建菜单的时候把文字放到这个结构中的。
文字没问题,可能是DC的问题了。
goodboyws
2005-08-01
打赏
举报
回复
1.dc可能不对
dc = GetDC(NULL);
2.pItem->ch的数据从哪儿来
softrain
2005-07-31
打赏
举报
回复
大家看不到?
VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:
这些附加的功能包括从画线的
宽度
和颜色到画文本时所用的字体。图形对象类封装了所有六个图形对象。 下面的表格列出了MFC的图形对象类: MFC类 图形对象句柄 图形对象目的 CBitmap HBITMAP 内存中的位图 CBrush ...
C++MFC教程
这个
问题
很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下: 1、需要有好的C/C++基础...
Owner D
raw
Menu 在动态修改后
文字
截断的
问题
简单来说就是,自绘
菜单
依赖一个只会在第一次popup的时候才被调用的MeasureItem来计算合理的
菜单
宽度
/高度,导致在动态修改
菜单
项为比原本更长的文本时仍以旧的
宽度
画
菜单
。 贴个截图可能更清楚
菜单
自绘方面的知识
1要实现漂亮的界面
菜单
,必须要启动
菜单
项的自绘功能,所谓
菜单
的自绘,就是让
菜单
自己管理自己的显示效果,为此,首先要作的就是设置
菜单
项的风格为MF_OWN
ERD
RAW
(自绘制),设置
菜单
的自绘功能即可以通过CMenu类的...
MFC小练手:详解自绘右键
菜单
(继承CMenu)
也许女生被人感觉审美观会好点,所以第一个任务就是设计一个
菜单
。 而我的审美观觉得我做的东西都不会很colorful,因为我是个素色主义者,平日里穿的衣服裙子都是黑白灰红的深女风。(咳跑题了) 于是我做的...
界面
15,980
社区成员
115,900
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章