好像在CSDN上看过很多次讨论的都没结果,昨天看书偶有感悟。如果那个......,就当......吧。
原理:
字符(串)长度像素/字符串长度厘米 = 显示器长宽像素/显示器长宽厘米。
但在不同分辨率下,计算结果会有些偏差,应该是获取的字符串长度厘米有偏差,因为这个只能xx到0.01毫米,在标准分辨率下获取的比较准确。\(^o^)/~
void CWindowsDisignDlg::OnButton1()
{
CClientDC dc(this);
CString str = "0000000000000000000000000";
/*
TEXTMETRIC me;
dc.GetTextMetrics(&me);
int i = me.tmHeight;
dc.SetMapMode(MM_HIMETRIC);
dc.GetTextMetrics(&me);
int j = (int)me.tmHeight;
*/
CSize size = dc.GetTextExtent(str);
int i = size.cx;
dc.SetMapMode(MM_LOMETRIC);
size = dc.GetTextExtent(str);
int j = size.cx;
int length_mix = GetSystemMetrics(SM_CXSCREEN);
int height_mix = GetSystemMetrics(SM_CYSCREEN);
double height = 1.0*j*height_mix/i/1000;
double length = 1.0*j*length_mix/i/1000;
CString message;
message.Format("i=%d j=%d\n%lfCM * %lfCM",i,j,length,height);
MessageBox(message);
}