如何从 CMFCPropertyFontProperty 获取字体大小
我使用此代码块获取用户从 CMFCPropertyFontProperty 控件的字体对话框中选择的字体名称、样式和大小。 我已经能够获取名称和样式,但大小似乎返回不同的值。
CMFCPropertyGridProperty* pCurSel = m_wndPropList.GetCurSel();
CMFCPropertyGridFontProperty* pFontProp = dynamic_cast<CMFCPropertyGridFontProperty*>(pCurSel);
if (pFontProp) {
LPLOGFONT font_info = pFontProp->GetLogFont();
INT nSize = 0;
nSize = font_info->lfHeight;
//nSize seems to return a negative value... :(
}
我意识到有一个公式:
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
但我似乎无法让它工作...我如何从 CMFCPropertyFontProperty 获取 hDC? 请帮忙...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以只使用 GetDC(NULL); 获取屏幕的 HDC,我认为它与字体对话框将使用的相同。
LOGFONT 文档描述了 lfHeight 成员的 +ve 和 -ve 值的含义,
http://msdn.microsoft.com/en-us/library/dd145037(VS.85).aspx
You can just use GetDC(NULL); to get an HDC for the screen which I assume will be the same as what the font dialog will use.
The LOGFONT documentation describes the meaning of +ve and -ve values for the lfHeight member,
http://msdn.microsoft.com/en-us/library/dd145037(VS.85).aspx