according to windows sdk sources:
#if(WINVER >= 0x0500) /* * Multimonitor API. */ #define MONITOR_DEFAULTTONULL 0x00000000 #define MONITOR_DEFAULTTOPRIMARY 0x00000001 #define MONITOR_DEFAULTTONEAREST 0x00000002 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) WINUSERAPI HMONITOR WINAPI MonitorFromPoint( _In_ POINT pt, _In_ DWORD dwFlags); WINUSERAPI HMONITOR WINAPI MonitorFromRect( _In_ LPCRECT lprc, _In_ DWORD dwFlags); WINUSERAPI HMONITOR WINAPI MonitorFromWindow( _In_ HWND hwnd, _In_ DWORD dwFlags); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion #define MONITORINFOF_PRIMARY 0x00000001 #ifndef CCHDEVICENAME #define CCHDEVICENAME 32 #endif #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) typedef struct tagMONITORINFO { DWORD cbSize; RECT rcMonitor; RECT rcWork; DWORD dwFlags; } MONITORINFO, *LPMONITORINFO; #ifdef __cplusplus typedef struct tagMONITORINFOEXA : public tagMONITORINFO { CHAR szDevice[CCHDEVICENAME]; } MONITORINFOEXA, *LPMONITORINFOEXA; typedef struct tagMONITORINFOEXW : public tagMONITORINFO { WCHAR szDevice[CCHDEVICENAME]; } MONITORINFOEXW, *LPMONITORINFOEXW; #ifdef UNICODE typedef MONITORINFOEXW MONITORINFOEX; typedef LPMONITORINFOEXW LPMONITORINFOEX; #else typedef MONITORINFOEXA MONITORINFOEX; typedef LPMONITORINFOEXA LPMONITORINFOEX; #endif // UNICODE #else // ndef __cplusplus typedef struct tagMONITORINFOEXA { MONITORINFO DUMMYSTRUCTNAME; CHAR szDevice[CCHDEVICENAME]; } MONITORINFOEXA, *LPMONITORINFOEXA; typedef struct tagMONITORINFOEXW { MONITORINFO DUMMYSTRUCTNAME; WCHAR szDevice[CCHDEVICENAME]; } MONITORINFOEXW, *LPMONITORINFOEXW; #ifdef UNICODE typedef MONITORINFOEXW MONITORINFOEX; typedef LPMONITORINFOEXW LPMONITORINFOEX; #else typedef MONITORINFOEXA MONITORINFOEX; typedef LPMONITORINFOEXA LPMONITORINFOEX; #endif // UNICODE #endif WINUSERAPI BOOL WINAPI GetMonitorInfoA( _In_ HMONITOR hMonitor, _Inout_ LPMONITORINFO lpmi); WINUSERAPI BOOL WINAPI GetMonitorInfoW( _In_ HMONITOR hMonitor, _Inout_ LPMONITORINFO lpmi); #ifdef UNICODE #define GetMonitorInfo GetMonitorInfoW #else #define GetMonitorInfo GetMonitorInfoA #endif // !UNICODE typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM); WINUSERAPI BOOL WINAPI EnumDisplayMonitors( _In_opt_ HDC hdc, _In_opt_ LPCRECT lprcClip, _In_ MONITORENUMPROC lpfnEnum, _In_ LPARAM dwData); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion