电脑屏幕市125%显示,mfc获得的客户区窗口比设置的要大一些的原因是什么
时间: 2024-02-11 08:09:10 浏览: 99
MFC控件大小随窗口变化
5星 · 资源好评率100%
这是因为 Windows 操作系统支持缩放显示,当您将缩放比例设置为 125% 时,Windows 会自动调整显示的比例,从而使得所有的元素(包括窗口、文本、图标等等)都按比例缩放。但是,MFC 中的窗口大小是以设备单位(Device Units)来度量的,而不是像素(Pixel)。
设备单位是一个抽象的度量单位,它与屏幕分辨率相关,而不是与缩放比例相关。在高 DPI 显示模式下,设备单位的大小会相应地增加,而 MFC 获取的客户区窗口大小也会相应地增加,以适应缩放比例。
因此,如果您使用 `GetClientRect()` 函数获取客户区窗口的大小,它会返回一个相对于设备单位的大小。如果您希望获取真实的像素大小,您可以使用 `GetDpiForWindow()` 函数获取当前窗口的 DPI 值,然后将设备单位转换为像素,如下所示:
```cpp
CRect rect;
GetClientRect(rect);
UINT dpi = GetDpiForWindow(m_hWnd);
rect.right = MulDiv(rect.right, dpi, 96);
rect.bottom = MulDiv(rect.bottom, dpi, 96);
int nWidth = rect.Width();
int nHeight = rect.Height();
```
在上述代码中,`MulDiv()` 函数用于将设备单位转换为像素。`96` 是标准 DPI 值,可以根据需要进行更改。
阅读全文