具有不同缩放监视器的SetWindowPos将位置设置到错误的位置

时间:2018-12-11 14:13:46

标签: c++ windows setwindowpos

我有2个分辨率和缩放比例不同的显示器:

  1. 2560 * 1440缩放比例x1(主)

  2. 1920 * 1200缩放x1.5(从主画面向左移) [2] [1]对齐顶部)

我的应用程序正在更改另一个应用程序窗口的位置。我尝试设置位置的窗口尺寸为300x200。我将窗口位置设置为(-150 | 200),然后在下一行中检查位置:

::SetWindowPos(this->handle, 0, lLeft, lTop, 0,0, SWP_NOREPOSITION | SWP_NOSIZE);
// output lLeft, lTop
RECT r = { 0 };
::GetWindowRect(this->handle, &r);
// output r.left, r.top

我有以下输出:

<< -150  200 // SetWindowPos
>> -740  133 // GetWindowRect

定位后,窗口的缩放比例为1(从主缩放),而位于次窗口上,缩放比例应为1.5

它用x = [-150 ... 0]

错放了窗口

当窗口部分位于辅助监视器上并且窗口的中间点已经位于主监视器上时,似乎会发生这种情况。

我有什么办法可以避免这种行为?

0 个答案:

没有答案