我正在做一个正在从主窗口调用另一个窗口的应用程序。我的问题是如何确定主应用程序窗口位于哪个监视器(如果有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 窗口的句柄,其余的很容易。

10-04 22:32