gpt4 book ai didi

c++ - 如何使用 C++ 生成器 (Firemonkey) 获取屏幕大小

转载 作者:行者123 更新时间:2023-11-27 23:00:04 26 4
gpt4 key购买 nike

我知道这是一个愚蠢的问题,但是在更改可视化库时我发现 FMX 有一个“麻烦”...我的问题是:我需要做自己的边框,所以我将属性设置为 Border Style:"None",但是应用程序以全屏模式运行,还覆盖了 Windows 工具栏,所以我想要一种调整应用程序表单大小的方法根据屏幕,例如:

mainForm->Height = Screen->Height - 10;

可以使用 VCL,但是有什么方法可以使用 FMX 库来实现吗?我用FMX征服的最大值是(我不知道它如何返回值,以及值的种类):

Screen->Size(); // TSize

我现在也征服了,但是编译报错:

TSize* Tamanho = new TSize;
Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho->Width;
frmPrincipal->Height = Tamanho->Height - 10;

错误:“E2034 无法将‘TSize’转换为‘TSize*’”

最后我试着把它放在 frmPrincipal.h 上,但同样的错误:

TSize *Tamanho;

PS.:解决“主要问题”的其他可能解决方案是可以接受的......

非常感谢!

最佳答案

TScreen::Size() 返回 TSize 结构的实际实例,而不是 TSize* 指针。您需要相应地更改代码:

TSize Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho.Width;
frmPrincipal->Height = Tamanho.Height - 10;

或者,您可以使用 FMX 的 Platform Services访问 IFMXScreenService 的框架直接接口(interface)(这是 TScreen::Size() 内部使用的):

_di_IInterface Intf;
if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXScreenService), Intf))
{
_di_IFMXScreenService Svc = Intf;
TPoint size = Svc->GetScreenSize().Round();
frmPrincipal->Width = size.X;
frmPrincipal->Height = size.Y - 10;
}

关于c++ - 如何使用 C++ 生成器 (Firemonkey) 获取屏幕大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28634646/

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