[Visual C++] 모니터 정보 알아오기

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);