当调用DrawText()时,我没有得到我想要的结果。我想要一个Checkbox控件的文本宽度。但它比它应该更广泛。 我不希望标有红色的部分。
DrawTextA(strText, strlen(strText), *pclRect, DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE);
int iLength = pclRect->right - pclRect->left;
知道如何获得绝对值吗? 我可以使用不同的标志来获得我想要的结果吗?
编辑:
SIZE sz;
HFONT font = (HFONT)pCWnd->GetFont(); //(pCWnd is my CButton)
HDC hdc = GetDC(NULL);
SelectObject(hdc, font);
GetTextExtentPoint32(hdc, strText, strText.GetLength(), &sz);
ReleaseDC(NULL, hdc);
答案 0 :(得分:1)
这是一个获取文本长度的简单代码。要做任何有用的事情,你需要复选框,主题数据等的尺寸。
nlapiReuqstURL
答案 1 :(得分:0)
不幸的是,问题不在于没有的方式来做到这一点......而是很多。
我会考虑使用GetTextExtentPoint32,更具历史性GetTextExtent,或者你甚至可以要求DrawText这样做......就像这样: CRect rect(0,0,0,0); m_hControl.GetDC() - > DrawText(szString,& rect,DT_CALCRECT);