C++获取所有扩展屏幕的摆放位置和坐标?

lhappyb 2019-03-20 09:29:27
在windows上设置多屏幕,需要知道这些屏幕的摆放,监控到鼠标位置判断此时鼠标在哪个屏幕上。
请问各位有没有API去做到这点,能拿到各个屏幕的左上角的坐标点也可以。

...全文
714 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhappyb 2019-03-20
  • 打赏
  • 举报
回复
有没人知道~?
starytx 2019-03-20
  • 打赏
  • 举报
回复 1
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,
HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
static BOOL first = TRUE; //标志
std::vector<CRect> * pRect = (std::vector<CRect>*)dwData;
//保存显示器信息
MONITORINFO monitorinfo;
monitorinfo.cbSize = sizeof(MONITORINFO);

//获得显示器信息,将信息保存到monitorinfo中
GetMonitorInfo(hMonitor, &monitorinfo);
//若检测到主屏
if (monitorinfo.dwFlags == MONITORINFOF_PRIMARY)
{
if (first) //第一次检测到主屏
{
first = FALSE;
pRect->push_back(monitorinfo.rcMonitor);
}
else //第二次检测到主屏,说明所有的监视器都已经检测了一遍,故可以停止检测了
{
first = TRUE; //标志复位
return FALSE; //结束检测
}
}
else
{
pRect->push_back(monitorinfo.rcMonitor);
}
first = TRUE; // 恢复主屏标记为初始状态
return TRUE;
}


使用方法:
// 检测显示器数量
std::vector<CRect> vRect;
EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, (LPARAM)&vRect); // 枚举所有显示器的Rect

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧