环境:PARALLES DESKTOP 虚拟机里的WIN7
在新建一个MFC的项目
int width = ::GetSystemMetrics(SM_CXSCREEN);
int height = ::GetSystemMetrics(SM_CYSCREEN);
得到的分辨率是正确的
width=2880 height=1880
但是新建一个WIN32程序 .
同样的程序 得到却是
width=1448 height=905 为什么
看下显示属性中的dpi设置有没有修改过。
可以压 编译环境:VS2013 Console project
把项目--配置里 --常规 MFC的使用 改为使用MFC的话。软件界面变小了,但是这个API获得数据就正确了。
怀疑还是retina屏的问题,引入了MFC库这个函数获取的就是设备的分辨率。
在WIN32项目中获取的怀疑是WIN系统某个结构里的数据,但这个数据被虚拟机给改了,
因为为了不使软件看起来太小,所以虚拟机自动按2*2个象素作为一个点来显示。
用WMI读出来 我的也不对 应该是虚拟机里面的分辨率和本机的不一样
直接查看虚拟机里面的分辨率测试
而且最好用真实物理机器测试这些,虚拟机有时候会有一些不准确