C++ CDC MFC类成员函数DPtoHIMETRIC()功能在Windows 7和Windows XP之间会有所不同吗?
CDC的MFC类成员函数DPtoHIMETRIC功能在Windows 7和Windows XP之间会有所不同吗?? 下面是示例代码: //以HIMETRIC单位计算边界矩形 //逻辑单位=0.01 mm,lpDrawItemStruct的值作为函数参数传递C++ CDC MFC类成员函数DPtoHIMETRIC()功能在Windows 7和Windows XP之间会有所不同吗?,c++,visual-c++,mfc,C++,Visual C++,Mfc,CDC的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()); pD
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/fxhhde73v=vs.80.aspx
用于DPtoHIMETRIC
http://msdn.microsoft.com/en-us/library/h6e91ee5v=vs.80.aspx来自链接的MSDN文章: 转换基于物理英寸的像素数 受视频适配器的DPI设置影响。是的,在Windows 7上通常更高,因为它很容易更改: “设置自定义文本大小DPI”链接将生成:
重置设置可能会使程序再次正常运行。或者,Windows将开始以150%的速度扩展不支持DPI的旧应用程序。以产生模糊输出为代价。当然,这些都不是真正的解决办法。编写能够在不同DPI设置下平滑缩放图形的代码需要大量工作。摘自链接的MSDN文章: 转换基于物理英寸的像素数 受视频适配器的DPI设置影响。是的,在Windows 7上通常更高,因为它很容易更改: “设置自定义文本大小DPI”链接将生成:
重置设置可能会使程序再次正常运行。或者,Windows将开始以150%的速度扩展不支持DPI的旧应用程序。以产生模糊输出为代价。当然,这些都不是真正的解决办法。编写能够在不同DPI设置下平滑缩放图形的代码需要工作。从哪里获得rc值?rc类型正确。它的值从正确的rclpDrawItemStruct->rcItem中检索;你从哪里得到rc的值?rc的类型是正确的。它的值从正确的rclpDrawItemStruct->rcItem中检索;旁注:编写无缝适应系统DPI的Windows UI代码几乎是徒劳的练习。。。这是可以做到的,但它需要大量的工作,并造成了许多挫折。旁注:编写无缝适应系统DPI的Windows UI代码几乎是徒劳的练习。。。这是可以做到的,但需要做很多工作,也会造成很多挫折。