Windows API - 在所有显示器上最大化 window

Windows API - Maximize a window across all monitors

我们有一个使用 RDP ActiveX 控件和 MFC 构建的自定义 RDP 客户端: https://docs.microsoft.com/en-us/windows/win32/termserv/using-remote-desktop-web-connection

为了支持多显示器,我们使用put_UseMultimon函数: https://docs.microsoft.com/en-us/windows/win32/termserv/imsrdpclientnonscriptable5-usemultimon

这种方法可行,但我们必须手动将 window 拉伸到显示器上。最大化 window 将在其中一台显示器上最大化它。我们得到的体验不是很好,我们不能真正使用整个区域,并且 window 标题栏仍然存在(在一屏最大化 window 时它消失了)。

我们希望获得类似于mstsc的体验,其中最大化window会将其样式更改为最大化并使window跨越整个区域。有没有办法最大化 window 并使其跨越所有显示器?

@JonathanPotter 是对的。

WM_GETMINMAXINFO sent to a window when the size or position of the window is about to change. An application can use this message to override the window's default maximized size and position.

下面是一个实现这个目的的例子。 (注意:从主显示器扩展到第二显示器确实有效。否则无效。)

case WM_GETMINMAXINFO:
    MINMAXINFO* maxInfo = (MINMAXINFO*)lParam;
    maxInfo->ptMaxPosition.x = GetSystemMetrics(SM_XVIRTUALSCREEN);
    maxInfo->ptMaxPosition.y = GetSystemMetrics(SM_YVIRTUALSCREEN);
    maxInfo->ptMaxSize.x = GetSystemMetrics(SM_CXVIRTUALSCREEN);
    maxInfo->ptMaxSize.y = GetSystemMetrics(SM_CYVIRTUALSCREEN);
    return 0;

更多参考:“Multiple Monitor System Metrics" "GetSystemMetrics function”。