我们在做项目的时候,往往会有想要获取屏幕的分辨率的需求。现在我们就来总结一下如何获取屏幕分辨率,不管是单屏还是多屏。

1、RECT deskRect;

GetWindowRect(GetDesktopWindow(),&deskRect);

该函数只能获取主屏的分辨率,也就是说如果有多个显示器的话,这个函数只能获取主屏分辨率。

而且该函数获得的结果会受屏幕缩放影响,比如原分变率为1920*1080,且在显示设置里设置了125%的缩放的话,得到的结果为1536*864。如果缩放为100%的话,结果为1920*1080.

2、  HDC hdc = GetDC(NULL);

int hdcWidth, hdcHeight;

hdcWidth = GetDeviceCaps(hdc, DESKTOPHORZRES);

hdcHeight = GetDeviceCaps(hdc, DESKTOPVERTRES);

ReleaseDC(NULL, hdc);

该方法也是只能获取主屏分辨率,与第一种方法一样,所不同的是它是无视缩放的。即不管你缩放是100%还是125%还是多少,得到的结果都是1920*1080

3、  int allX = GetSystemMetrics(SM_CXSCREEN);

int allY = GetSystemMetrics(SM_CYSCREEN);

该方法也是只能获取主屏分辨率,与第一种方法得到的结果一模一样,受缩放影响。

4、

struct ALLMONITORINFO

{

HMONITOR hMonitor;

RECT     rect;

bool     isPrimary;

};

BOOL CALLBACK MonitorEnumProc(__in  HMONITOR hMonitor, __in  HDC hdcMonitor, __in  LPRECT lprcMonitor, __in  LPARAM dwData)

{

vector<ALLMONITORINFO>& infoArray = *reinterpret_cast<vector<ALLMONITORINFO>* >(dwData);

ALLMONITORINFO monitorInfo;

monitorInfo.hMonitor = hMonitor;

//下面这句代码已经获取到了屏幕的分辨率,不管你有多少个屏幕都可以获取到,但是该分辨率是受缩放影响的。

monitorInfo.rect = *lprcMonitor;

infoArray.push_back(monitorInfo);

//这里是另一种获取屏幕分辨率的办法。

MONITORINFO monInfo;

monInfo.cbSize = sizeof(MONITORINFO);

//这个方法也是会受缩放影响,shit.

BOOL isGet = GetMonitorInfo(hMonitor, &monInfo);

if (isGet == TRUE) {

printf("rect wdith:%d,rect height:%d.\n", monInfo.rcMonitor.right - monInfo.rcMonitor.left, monInfo.rcMonitor.bottom - monInfo.rcMonitor.top);;

}

return TRUE;

}

int main() {

vector<ALLMONITORINFO> mInfo;

mInfo.clear();

//get number of monitors

mInfo.reserve(GetSystemMetrics(SM_CMONITORS));

EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, reinterpret_cast<LPARAM>(&mInfo));

//通过枚举之后,显示器的信息就存储到了mInfo里了。

return 1;

}

第四种方法里面包括两种方法,只是GetMonitorInfo函数需要相应的显示器句柄,所以我就放在了一起。

这些方法试下来,只有第四种方法能获取到主屏外的其他屏幕分辨率,但是都是受缩放影响的。所以现在还遗留一个问题,如何获取到其他屏幕不受缩放影响的分辨率?

转载:获取屏幕的分辨率(多屏幕或者单屏幕)相关推荐

  1. 已知屏幕的分辨率,整么计算屏幕比例?

    屏幕比例 都知道常见的手机屏幕比例有16:9.18:9.19.5:9- 日常开发过程中,一般关心的是屏幕的分辨率,很少关心屏幕的比例. 可是我就遇到了,在此记录一下计算方法. 已知屏幕的分辨率求屏幕比 ...

  2. 台式电脑怎么调分辨率_电脑屏幕正常分辨率是多少_台式电脑屏幕正常分辨率怎么设置-win7之家...

    在使用电脑的过程中,常常会因为一些设置从而导致用户的正常操作,例如系统对屏幕的分辨率设置,现今仍然会有用户在询问小编说自己的电脑屏幕正常分辨率应该设置多少合适呢?对此台式电脑屏幕正常分辨率怎么设置呢? ...

  3. 2560x1600分辨率高吗_手机屏幕分辨率真的越高越好?它的好处和坏处你知道吗?...

    如果你是新朋友,请点击上方的蓝色字 关注 "高科技爱好者",保证不会让你失望的. 在这个智能手机不断在更新换代的时代,小伙伴们在选择手机的时候又多了很多考量的因素.除了比较普遍的手 ...

  4. Android适配 获取手机屏幕的分辨率

    如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情. 首先:你需要在AndroidManifest.xml文件的<man ...

  5. Java获取屏幕真实分辨率

    这个问题大家可能不陌生,一搜索,就一堆答案,大多是一行代码搞定 Toolkit.getDefaultToolkit().getScreenSize(); 然而简单做了一个测试,效果如下,输出1707x ...

  6. 获取window的屏幕真实分辨率以及缩放后分辨率

    from win32 import win32api, win32gui, win32print from win32.lib import win32confrom win32.win32api i ...

  7. android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解

    PX(pixel): 即传统计算机语言中描述的像素,在Android则代表绝对像素. 之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一. 举例来 ...

  8. 某计算机屏幕的分辨率,计算机屏幕分辨率[Illustration]

    计算机是大多数人都熟悉的电子产品. 正是由于它的外表,我们的生活发生了翻天覆地的变化. 我们可以使用计算机来做很多事情,例如学习,工作和办公室,看电影,娱乐等等. 随着与计算机的接触时间越来越长,我们 ...

  9. 手机屏幕的分辨率和图像尺寸关系

    手机屏幕的分辨率 320*480 ,图像尺寸72*72,正常显示. 在 240*320 的屏幕分辨率下,图像尺寸是多少(缩放比率是多少)才会正常显示(不失真,不模糊)? 一般比你手机屏幕大的都没事,但 ...

最新文章

  1. python3练习题:并发编程(21-25)
  2. targetNamespace
  3. Multisim14.0 安装教程
  4. 动态加载vs静态加载
  5. 用java写了一个汉诺塔
  6. mysql ---- 约束
  7. lucene开发序之luke神器
  8. 用excel来做项目管理?
  9. 模糊C均值聚类算法---图像分割(python)
  10. Excel合并单元格中间插入斜杠和数字保留一位小数
  11. Antv F2双柱状图和折线图的混合写法
  12. Snagit 2019 快速截图
  13. 百度有啊创始团队写博客 自曝高层动荡内幕
  14. 学生选课信息管理系统(可行性分析报告)
  15. Linux下刻录cd,用debian命令刻录CD
  16. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 63绝对有效
  17. 危化品爆炸场景下的应急通信系统解决方案
  18. 2017年-2018年成长计划
  19. JS获取DOM元素的方法
  20. C++约瑟夫环(又称丢手绢)解决---最简单的理解

热门文章

  1. 阿里云code添加开发人员并使用Git管理
  2. linux下usb驱动编写
  3. 如何进行地图SDK开发(一)
  4. 《禅门锻炼说》十三篇自序
  5. C语言循环语句实训项目,C语言程序设计与项目实训
  6. KMP+MANACHER题目总结
  7. 机器学习-查全率和查准率
  8. 域名解析里的A记录、MX记录、TXT记录、NS记录是什么
  9. jacob 文件类型转换
  10. 利用CSS伪元素写三角形