【发布时间】:2023-03-31 11:17:01
【问题描述】:
我需要为正在显示我的应用程序的监视器获取屏幕比例。多平台运行时 TPlatFormServices 有一个名为 IFMXScreenService 的服务,它返回屏幕比例 (GetScreenScale)。
问题是它只为主监视器返回它。我需要为正在运行我的应用程序的监视器获取它。
下面是我获取IFMXScreenService 的C++ 代码。如何修改它以获得我的活动监视器的屏幕服务?
if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXScreenService)) == true)
{
pScreenService_ = TPlatformServices::Current->GetPlatformService(__uuidof(IFMXScreenService));
}
【问题讨论】:
-
FireMonkey 不支持您的要求。没有针对每个监视器的
IFMXScreenService接口。你将不得不使用特定于平台的 API 来获得你想要的东西。例如,在 Windows 上,从FMX.Platform.Win.FormToHWND()获取 FireMonkey 表单的HWND,然后将HWND传递给 Win32 APIMonitorFromWindow()和GetMonitorInfo()函数,然后根据该信息自行计算比例。
标签: firemonkey c++builder multiple-monitors