######1. 주 모니터 해상도.
GetSystemMetrics(SM_CXSCREEN); //가로 해상도
GetSystemMetrics(SM_CYSCREEN); //세로 해상도
######2. 전체 모니터 해상도.
GetSystemMetrics(SM_CXVIRTUALSCREEN); //전체 가로 해상도
GetSystemMetrics(SM_CYVIRTUALSCREEN); //전체 세로 해상도
######3. 모든 모니터 좌표 정보.
//#include<WinUser.h> //GetSystemMetrics,
//#include<wingdi.h> //DISPLAY_DEVICEA, DEVMODEA
//#include<minwinbase.h> //ZeroMemory
int N = GetSystemMetrics(SM_CMONITORS); //모니터 개수
DISPLAY_DEVICEA dd;
DEVMODEA dm;
std::vector<CRect> mrect;
for (size_t i = 0; i < N; i++) {
::ZeroMemory(&dd, sizeof(DISPLAY_DEVICEA));
dd.cb = sizeof(DISPLAY_DEVICEA);
EnumDisplayDevicesA(nullptr, i, &dd, 0);
::ZeroMemory(&dm, sizeof(DEVMODEA));
if (EnumDisplaySettingsA(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm)) {
mrect.push_back(CRect(dm.dmPosition.x, dm.dmPosition.y, dm.dmPosition.x + dm.dmPelsWidth, dm.dmPosition.y + dm.dmPelsHeight));
}
}
######4. 현재 프로세스가 위치한 모니터 좌표.
MONITORINFOEXA monitor;
monitor.cbSize = sizeof(MONITORINFOEXA);
CRect rect;
wnd->GetWindowRect(&rect);
HMONITOR hMOnitor = MonitorFromRect(&rect, MONITOR_DEFAULTTONEAREST);
GetMonitorInfoA(hMOnitor, &monitor);
CRect mrect = monitor.rcWork;
MONITORINFOEXA::rcWork
는 화면에서 작업 가능한 영역이다.(일반적으로 작업 표시줄을 제외한 크기).
######5.작업 표시줄 크기 구하기.
CRect taskbar;
::SystemParametersInfoA(SPI_GETWORKAREA, 0, &taskbar, 0);