[windows][ui]计算字符宽度

int CalTextWidth(const CString& strText, HDC hDc)
{
    CRect rc(0,0,0,0);
    ::DrawText(hDc, strText, strText.GetLength(), &rc, DT_CALCRECT| DT_NOPREFIX);
    return rc.Width();

}



DT_CALCRECT只是计算,并不显示。
我现在知道了,返回的rect是扩展后的显示区域,DT_CALCRECT会扩展rect的宽度和长度,即right和bottom,返回的rect是以传入的(rect.left,rect.top)为原点扩展right和bottom后的一个区域,drawtext并不会改变rect.left和rect.top。返回的rect并不是已经居中了的区域,只是一个已经经过计算的需要显示大小的区域,需要你自己用offsetrect来把返回的rect移动到你想要显示的位置(比如居中的位置)

你可能感兴趣的:([windows][ui]计算字符宽度)