DrawTextA()不需要的结果

时间:2015-12-22 17:33:59

标签: c++ mfc

当调用DrawText()时,我没有得到我想要的结果。我想要一个Checkbox控件的文本宽度。但它比它应该更广泛。 我不希望标有红色的部分。

enter image description here

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);

2 个答案:

答案 0 :(得分:1)

这是一个获取文本长度的简单代码。要做任何有用的事情,你需要复选框,主题数据等的尺寸。

nlapiReuqstURL

答案 1 :(得分:0)

不幸的是,问题不在于没有的方式来做到这一点......而是很多

我会考虑使用GetTextExtentPoint32,更具历史性GetTextExtent,或者你甚至可以要求DrawText这样做......就像这样:    CRect rect(0,0,0,0);    m_hControl.GetDC() - > DrawText(szString,& rect,DT_CALCRECT);