如何将 UI 居中并在整个分辨率上拉伸形状?国家信息安全局

问题描述 投票:0回答:1

我放置了 MUI_PAGE_COMPONENTS 表单。 接下来,对于安装程序,我将分辨率设置为 1280 x 720。

!define WIDTH 1280
!define HEIGHT 720

Function .onGUIInit
    GetDlgItem $0 $HWNDPARENT 1000 
    System::Call 'user32::MoveWindow(i $HWNDPARENT, i 0, i 0, i ${WIDTH}, i ${HEIGHT}, i 1)' MoveWindow(i $0, i 0, i 0, i ${WIDTH}, i ${HEIGHT}, i 1)' 
FunctionEnd

但是所有的 UI 元素都位于左上角。 是否可以将表单(UI 元素)居中并拉伸到窗口的整个大小? 如果没有的话,如何拉伸组件框和描述框?

screenshot

我进行了搜索,但从未找到简单的解决方案。操纵现成表单的元素真的不可能吗?

user-interface installation size nsis
1个回答
0
投票

这是可能的,并且您实际上发布了正确的解决方案:A您需要的是单独移动/调整控件的大小。**

例如“下一步”按钮:

GetDlgItem $0 $HWNDPARENT 1 ; Get the handle to button
System::Call 'user32::MoveWindow(i $HWNDPARENT, i <param> , i <param> , i <param> i <param>  i 1)' MoveWindow(i $0, i <param> , i <param> , i <param> , i <param>, i 1)' 

有办法批量移动所有控件(Windows API 不支持),因此迭代您想要移动/调整大小的所有控件,获取它们的句柄(请参阅 NSIS 文档)并使用适当的参数调用 MoveWindow Win API 函数:

https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-movewindow

© www.soinside.com 2019 - 2024. All rights reserved.