1

CDC(一个 MFC 类)MFC 类成员函数 DPtoHIMETRIC() 功能在 Windows 7 和 Windows XP 之间会有所不同吗?下面是示例代码:

//以 HIMETRIC 单位计算边界矩形 //逻辑单位 = 0.01 mm,lpDrawItemStruct 的值作为函数参数传递

CDC pDC= CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->SetMapMode(MM_HIMETRIC);
CSize wh(rc.Width(),rc.Height());
pDC->DPtoHIMETRIC(&wh);
int x = wh.cx;
int y = wh.cy;

转换后,Windows XP 中的值(x 和 y)随 Windows 7 变化。因此,功能受到影响。请提供您处理此问题的建议和意见。

参考: 对于 CDC 类 http://msdn.microsoft.com/en-us/library/fxhhde73(v=vs.80).aspx 对于 DPtoHIMETRIC http://msdn.microsoft.com/en-us/library/h6e91ee5 (v=vs.80).aspx

4

1 回答 1

4

从链接的 MSDN 文章:

转换基于物理英寸中的像素数

这受视频适配器的 DPI 设置影响。是的,在 Windows 7 上通常更高,因为它很容易更改:

在此处输入图像描述

“设置自定义文本大小 (DPI)”链接产生:

在此处输入图像描述

重置设置可能会使您的程序再次正常运行。或者提高一点,Windows 将开始将旧的非 DPI 感知应用程序缩放 150%。以产生模糊输出为代价。当然,这些不是真正的修复。编写在不同 DPI 设置下平滑缩放图形的代码需要工作。

于 2012-12-03T13:07:26.137 回答