EXPORT QRect screenGeometry() { #if QT_VERSION >= 300 QDesktopWidget *desktop = QApplication::desktop(); QRect rc; for (int i = 0; i < desktop->numScreens(); i++){ rc |= desktop->screenGeometry(i); } return rc; #else #ifdef WIN32 HINSTANCE hLib = LoadLibraryA("user32.dll"); BOOL (WINAPI *_EnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM) = NULL; (DWORD&)_EnumDisplayMonitors = (DWORD)GetProcAddress(hLib, "EnumDisplayMonitors"); if (_EnumDisplayMonitors == NULL){ FreeLibrary(hLib); return QApplication::desktop()->rect(); } vector<QRect> rc; if (_EnumDisplayMonitors(NULL, NULL, enumScreens, (LPARAM)&rc) == 0){ FreeLibrary(hLib); return QApplication::desktop()->rect(); } QRect res; for (vector<QRect>::iterator it = rc.begin(); it != rc.end(); ++it) res |= (*it); return res; #else return QApplication::desktop()->rect(); #endif #endif }