void CTouchDlg::OnInitialDialog()
{
EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, (LPARAM)this);
}
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC dc, LPRECT rc,
LPARAM dwData)
{
dc = dc;//这句无其他用途,仅供去除waring
rc = rc;//这句无其他用途,仅供去除waring
CTouchDlg* pThis = (CTouchDlg*)dwData;
static BOOL first = TRUE; //标志
//保存显示器信息
MONITORINFO monitorinfo;
monitorinfo.cbSize = sizeof(MONITORINFO);
//获得显示器信息,将信息保存到monitorinfo中
GetMonitorInfo(hMonitor, &monitorinfo);
//若检测到主屏
if(monitorinfo.dwFlags == MONITORINFOF_PRIMARY)
{
if(first) //第一次检测到主屏
{
first = FALSE;
pThis->m_numScreen++;
//将显示器的分辨率信息保存到rect
pThis->m_rect[0] = monitorinfo.rcMonitor;
return TRUE;
}
else //第二次检测到主屏,说明所有的监视器都已经检测了一遍,故可以停止检测了
{
first = TRUE; //标志复位
return FALSE; //结束检测
}
}
else
{
pThis->m_rect[1] = monitorinfo.rcMonitor;
pThis->m_numScreen++;
}
return TRUE;
}