Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2649881
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2008-07-15 20:21:28

在MFC下运行此函数,
AAAA,BBBB情况下与抓图比较,差异比较大,CCCC最接近,可能绘图最好


void CCoolTabCtrl::GetTextSize(LPCTSTR lpszText, int nCount, CSize &size)
{
 size.cx = 0;
 size.cy = 0;
 /*AAAA*********************************************
 /*CString ss("Customized Split Size (0.00 MB)");
 CClientDC dc(this);
 int nSave = dc.SaveDC();
 CFont font;  
 font.CreateStockObject(SYSTEM_FONT);  
 LOGFONT lf;  
 memset(&lf,   0,   sizeof(LOGFONT));  
 font.GetLogFont(&lf);  
 lf.lfWidth = 6;
 lf.lfHeight = 8;
 strcpy(lf.lfFaceName, "宋体");
 dc.SelectObject(font);
 size = dc.GetTextExtent( lpszText, nCount );

 CRect rc(0,0,0,0);
 dc.DrawText(ss, &rc, DT_CALCRECT);
 CSize s = dc.GetTextExtent("Customized Split Size (0.00 MB)");
 CSize c;
 GetTextExtentPoint32(dc,"Customized Split Size (0.00 MB)",31, &c);
 dc.RestoreDC(nSave); 
//宽度:0xd1
 */

 /*BBBB*********************************************
 HDC   hdc=::GetDC(*this);  
 TEXTMETRIC tm;  

 LPCTSTR szString = "Customized Split Size (0.00 MB)";
 ::GetTextMetrics(hdc,&tm);  
 ::GetTextExtentPoint32(hdc, szString, lstrlen(szString),&size);  
 int   cx=size.cx;//宽度  
 int   cy=tm.tmHeight+tm.tmExternalLeading;//高度  
宽度:0xd1 
 */
 
 /*CCCC*********************************************/
 CClientDC dc(this);
 NONCLIENTMETRICS ncm;
 ncm.cbSize = sizeof(NONCLIENTMETRICS);
 SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0);

 CRect rc(0,0,0,0);
 CFont font;
 font.CreateFontIndirect(&ncm.lfMessageFont);
 // 将字体选进DC
 CFont* pOldFont = dc.SelectObject(&font);
 // 计算文本大小
 CString str("Customized Split Size (0.00 MB)");
 dc.DrawText(str, rc, DT_CALCRECT);
 // 回复旧字体-这是必须的
 dc.SelectObject(pOldFont);
// 宽度:0x96 与抓图下的象素值最接近
}

阅读(2356) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-12-23 17:30:22

光标: 只要把LoadCursor(IDC_XXXXX);改成LoadStandardCursor(缺省光标ID号); 缺省光标ID号如下: IDC_ARROW 缺省:标准箭头 IDC_WAIT 漏沙(黑白的,而且不动) IDC_IBEAM "工" IDC_CROSS "十" IDC_UPARROW "↑" IDC_SIZEALL "十"四方向箭头 IDC_SIZENWSE "\"两方向箭头 IDC_SIZENESW "/"两方向箭头 IDC_SIZEWE "-"两方向箭头 IDC_SIZENS "|"两方向箭头