我正在做一个正在从主窗口调用另一个窗口的应用程序。我的问题是如何确定主应用程序窗口位于哪个监视器(如果有2个或更多)上,以及如何获取该监视器的句柄?
到目前为止,我的代码如下所示:
RECT desktop;
const HWND hDesktop = GetDesktopWindow();
GetWindowRect( hDesktop, &desktop );
int width = SInt32( desktop.right / 2 );
int height = SInt32( desktop.bottom / 2 );
OpenNewWindow( width, height );
但这仅能处理台式机(主显示器),而右和底是主显示器的分辨率大小。
我正在用C++编写
谢谢!
最佳答案
我找到了解决方案:
HMONITOR currentMonitor = MonitorFromWindow( GetActiveWindow(), MONITOR_DEFAULTTONEAREST );
MONITORINFO activeMonitorInfo;
activeMonitorInfo.cbSize = sizeof( MONITORINFO );
GetMonitorInfo( currentMonitor, (LPMONITORINFO) &activeMonitorInfo );
int width = SInt32( ( activeMonitorInfo.rcMonitor.right - activeMonitorInfo.rcMonitor.left ) * 0.75 );
int height = SInt32( ( activeMonitorInfo.rcMonitor.bottom - activeMonitorInfo.rcMonitor.top ) * 0.75 );
OpenNewWIndow( width, height );
碰巧GetActiveWindow返回当前 Activity 窗口的句柄,其余的很容易。