【C++】获取指定点所在屏幕的尺寸

编程入门 行业动态 更新时间:2024-10-18 16:47:18

【C++】获取指定点所在屏幕的<a href=https://www.elefans.com/category/jswz/34/1763894.html style=尺寸"/>

【C++】获取指定点所在屏幕的尺寸

问题

多个显示器时,获取指定点所在的显示器的尺寸。

分析

  • 之前整理过获取屏幕尺寸的方法:
  • 多显示器时,需要用到GetSystemMetricsEnumDisplayDevicesEnumDisplaySettings函数

解决

#include "WinUser.h"void GetRectByPoint(CPoint point, CRect& rectRes)
{//获取显示屏幕个数int nCount = GetSystemMetrics(SM_CMONITORS);if (nCount < 0)return;DISPLAY_DEVICE device;SecureZeroMemory(&device, sizeof(device));device.cb = sizeof(device);DEVMODE devMode;SecureZeroMemory(&devMode, sizeof(devMode));devMode.dmSize = sizeof(devMode);// 获取所有显示屏幕的位置std::vector<CRect> vScreenRet;for (int nIndex = 0; nIndex < nCount; ++nIndex){if (!EnumDisplayDevices(NULL, nIndex, &device, 0)|| !EnumDisplaySettings(device.DeviceName, ENUM_CURRENT_SETTINGS, &devMode))continue;CRect rc(devMode.dmPosition.x, devMode.dmPosition.y, devMode.dmPosition.x + devMode.dmPelsWidth, devMode.dmPosition.y + devMode.dmPelsHeight);vScreenRet.push_back(rc);}// 匹配指定点所在显示器for (const CRect& rc : vScreenRet){if (!::PtInRect(rc, point))continue;resRt = rc;break;}
}int main()
{// 给定点坐标CPoint point;// 获取显示器尺寸CRect rect;GetRectByPoint(point, rect);// 输出获取到的数据cout<<"rect width: " << rect.right-rect.left << endl; cout<<"rect height: " << rect.bottom-rect.top << endl; return 0;
}

OK!搞定!

更多推荐

【C++】获取指定点所在屏幕的尺寸

本文发布于:2023-11-15 11:36:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598925.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:尺寸   屏幕

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!