【发布时间】:2014-02-23 21:32:35
【问题描述】:
我的任务是计算连接到运行以下用户模式代码的计算机的当前监视器(屏幕)的数量:
int nCnt = 0;
if(!EnumDisplayMonitors(NULL, NULL, countMonitorsProc, (LPARAM)&nCnt))
{
//Error
}
BOOL countMonitorsProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
int* pCnt = (int*)dwData;
(*pCnt)++;
return TRUE;
}
它在大多数情况下都有效,但在某些系统上,EnumDisplayMonitors 返回 FALSE。此类系统的示例:我的笔记本电脑,我连接了外接显示器并盖上了盖子。
我很好奇,我是否使用正确的方法来计算连接的显示器?
【问题讨论】:
-
GetLastError()返回什么? -
请不要在标题中植入不必要的标签——这就是标签部分的用途。谢谢:)
-
@alk:根据 MSDN,
GetLastError不用于该 API。 -
是否调用过回调?
-
如果您只想获取已安装显示器的数量,那您就错了。
nCnt = GetSystemMetrics(SM_CMONITORS);是正确的方法。