Sma*_*ery 5 c++ mfc visual-c++
我想动态地将CButton调整到其中文本的宽度.是否有内置的方法在MFC中执行此操作,或者计算某些指定文本的像素宽度(以便我可以使用CWnd::SetWindowPos)?
小智 8
这很乏味.您需要使用CWnd::GetFont()按钮来获取它所使用的字体,然后在您将选择该字体GetTextText的CDC对象上使用该标准.它看起来像
CClientDC dc( &button );
CFont * pOldFont = dc.SelectObject( button.GetFont() );
... dc.GetTextExtent...
dc.SelectObject( pOldFont);
Run Code Online (Sandbox Code Playgroud)
除了 @demoncodemonkey 的答案之外,您还可以使用该标志调用CDC::DrawTextDT_CALCRECT。这样,文本将不会被绘制,但传递给函数的 CRect 将具有要绘制的文本的宽度和高度。
如果您想绘制带有换行符的文本(使用标志DT_WORDBREAK),这尤其有用。您将无法使用 来做到这一点CDC::GetTextExtent。