typedef BOOL (__stdcall * pEnumDiaplayDevices)
(
LPCTSTR lpDevice, // device name
DWORD iDevNum, // display device
PDISPLAY_DEVICE lpDisplayDevice, // device information
DWORD dwFlags // reserved
);
bool GetScreenRect(int ScreenNo, RECT *rect)
{
pEnumDiaplayDevices xenum;
DISPLAY_DEVICE hDisplayDevice;
ZeroMemory(&hDisplayDevice, sizeof(hDisplayDevice));
hDisplayDevice.cb = sizeof(hDisplayDevice);
HMODULE hModule = LoadLibrary(L"user32.dll");
if(hModule){
xenum = ( pEnumDiaplayDevices )GetProcAddress(hModule, "EnumDisplayDevicesW");
}
if(!xenum){
FreeLibrary(hModule);
return false;
}
BOOL flag = xenum( NULL, ScreenNo, &hDisplayDevice, 0);
if(!flag){
FreeLibrary(hModule);
return false;
}
DEVMODE DeviceMode;
ZeroMemory(&DeviceMode, sizeof(DeviceMode));
DeviceMode.dmSize = sizeof(DeviceMode);
flag = EnumDisplaySettings(hDisplayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &DeviceMode);
rect->left = DeviceMode.dmPosition.x;
rect->top = DeviceMode.dmPosition.y;
rect->right = DeviceMode.dmPelsWidth;
rect->bottom = DeviceMode.dmPelsHeight;
FreeLibrary(hModule);
return true;
}
调用:
RECT rec;
int result = GetScreenRect(1, &rec);
MoveWindow((HWND)winId(), rec.left, 0, rec.right, rec.bottom,true );