vc 获取字符串宽度

GetTextBounds函数定义:

SizeF GetTextBounds(const Font& font,const StringFormat& strFormat,const CString& szText)
{
	USES_CONVERSION;
	GraphicsPath path;
	FontFamily fontfamily;
	font.GetFamily(&fontfamily);
	path.AddString(A2W(szText),wcslen(A2W(szText)),&fontfamily,
			font.GetStyle(),font.GetSize(),PointF(0,0),&strFormat);
	RectF rcBound;
	path.GetBounds(&rcBound);
	return SizeF(rcBound.Width,rcBound.Height);
}
使用示例:
#define ULONG_PTR unsigned long*
#include <GdiPlus.h>
#include <ATLCONV.h>
using namespace Gdiplus;

ULONG_PTR	m_gdiplusToken;

GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

pWnd = GetDlgItem(IDC_COMBO_SENDER);
CFont *cf = pWnd->GetFont();
LOGFONT lf;
cf->GetLogFont(&lf);
Font font(pWnd->GetDC()->GetSafeHdc(),&lf);
if (font.IsAvailable())
{
	StringFormat stringFormat;
	stringFormat.SetAlignment(StringAlignmentNear);
	CString AccText;
	pWnd->GetWindowText(AccText);	
	SizeF sizef = GetTextBounds(font,stringFormat,AccText);
	pWnd->SetWindowPos(NULL, rectBt.right+23, y,
		(int)sizef.Width + 24, rectBt.Height(), 0);
}

GdiplusShutdown(m_gdiplusToken);

转载于:https://my.oschina.net/shaxunyeman/blog/156048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值