c++ - 具有不同缩放监视器的 SetWindowPos 将位置设置为错误的位置
问题描述
我有 2 台具有不同分辨率和缩放比例的显示器:
2560 * 1440 缩放 x1(主要)
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]
当窗口部分在辅助监视器上并且窗口的中间点已经在主监视器上时,看起来会发生这种情况。
我能做些什么来避免这种行为吗?
解决方案
推荐阅读
- python - AttributeError:模块 'cv2' 没有属性 'VideoCapture'
- django - /account/reset_password/ 处的 OSError 以及 /student/register/ 处的 OSError [Errno 99] 无法分配请求的地址
- fastlane - 找不到通道“ios 调试”。可用通道:ios beta
- c++ - 将 wchar_t 转换为 wstring
- python - np.where 用于包含特定单词的字符串
- f# - F# 在 func `lambda` 和 `lambda` 之间存在差异 |> func
- windows - makefile:如何在 WSL 中运行单个命令
- javascript - 将纯 JavaScript 对象转换为类的实例
- java - 从 ConcurrentLinkedQueue 中迭代和删除元素
- lambda - 如何传递适用于 prism ObservesProperty 的表达式