我编写了一个简单的实用程序,可让您通过键入新的所需窗口宽度、高度和左上角来移动屏幕上的任何窗口和/或调整其大小。它在 100% 缩放时效果很好,但当我更改缩放比例时它会失败。
例如,在我的 4k 显示器上,我设置了 150% 缩放。 MoveWindow
将我的 3840x2160 显示器视为 2560x1440 显示器。当我告诉一个窗口移动到(1280,0)时,它会将左上角移动到屏幕的顶部中心。当我输入 (1920,0) 时,我希望我的程序能够做到这一点。问题是我仍然可以将窗口物理移动到屏幕上的每个像素。 MoveWindow
只是无法访问中间的额外像素。
我可以做些什么来强制MoveWindow
忽略缩放值吗?
最佳答案
正如 IInspectable 之前所说,该程序在 Windows 7 上确实失败了,直到我进行了以下更改。到目前为止,这似乎在 Windows 7 到 10 上运行良好。
if (IsWindows8Point1OrGreater())
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
hinstLib = LoadLibrary(TEXT("SHCore.dll"));
if (hinstLib != NULL)
{
ProcAdd = (MYPROC)GetProcAddress(hinstLib, "SetProcessDpiAwareness");
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
HRESULT ejHR = (ProcAdd)(PROCESS_PER_MONITOR_DPI_AWARE);
}
fFreeResult = FreeLibrary(hinstLib);
}
if (!fRunTimeLinkSuccess)
{
SetProcessDPIAware();
}
}
else if (IsWindowsVistaOrGreater())
{
SetProcessDPIAware();
}
关于c++ - 我可以让 MoveWindow 使用 Windows 10 中的屏幕坐标吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102688/