gpt4 book ai didi

c++ - 我可以让 MoveWindow 在 Windows 10 中使用屏幕坐标吗? C++

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:53 26 4
gpt4 key购买 nike

我编写了一个简单的实用程序,让您可以通过键入新的所需宽度、高度和窗口的左上角来移动屏幕上的任何窗口和/或调整其大小。它在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com