这意味着如果我有几台显示器,我希望窗口只能在一台显示器上绘制,而在所有其他显示器上“不存在”。我试过弄乱WM_NCPAINT
等但是只允许你以不同的方式绘制框架,它不允许你隐藏它(最好用窗口阴影)。
我正在玩一个窗口的想法,你可以分布在几个不同DPI的监视器上。现在这是不可能的(当一个窗口的50%在新监视器上时,Windows“将窗口”捕捉到新的DPI)。在MacOS上,它绘制了一个新窗口并显示两个窗口,但是分别显示右侧显示器的DPI,并且它非常流畅,没有任何痉挛性的对齐Windows。但MacOS不会让你在这两个显示器上保持一个窗口。我想看看我是否可以模拟这种行为,但允许在多监视器多DPI桌面上拉伸窗口。
我可以自由扩展我的UI,这不是一个问题,我的想法是在我的每个Window对象中都有一个std::tuple<Monitor&, HWND>
或类似的数组,每个监视器一个,EnableNonClientDpiScaling()
等。,将适当且正确缩放的区域绘制到每个HWND中,然后DeferWindowPos()
一次移动所有HWND。
但是,只有在可以仅在一台显示器上显示每个HWND时,我才能尝试这一点,到目前为止还没有运气。