Отрегулируйте размер компонента для MUI2

На самом деле я пытаюсь изменить размер моего компонента MUI2 Components следующих страниц: !insertmacro MUI_PAGE_LICENSE !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH

Я также добавил пользовательскую функцию для изменения размера каждого окна с помощью подключаемого модуля nsResize. Теперь у меня проблема в том, что компоненты неуместны и слишком малы по ширине и высоте.

Я искал это и нашел несколько идей по своему вопросу. Но я не хочу использовать хакер ресурсов для создания нового пользовательского интерфейса по нескольким личным причинам. Я увидел, что могу использовать Системный плагин для внесения корректировок, но он перегружает меня источником информации.

Затем я попытался выполнить это самостоятельно и потерпел неудачу. Мое реальное решение:

Function .myGuiInt
  System::Call "user32::GetClientRect(i #32770 , i r1)"
  System::Call "user32::SetWindowPos(i 1000, i, i, i 15000, i, i)"
  ....
FunctionEnd

Я попытался изменить размер текстового поля, в котором я установил лицензию. Но у меня нет эффекта, как я могу сделать эти вызовы, чтобы повлиять на пользовательский интерфейс?

Почему вы не можете использовать Resource Hacker? Вы хотите изменить только размер страницы компонентов или все страницы должны иметь больший размер? Вам необходимо знать программирование Win32, чтобы использовать Системный плагин ...

Anders 24.10.2018 18:00

Я не хочу манипулировать им, потому что я буду использовать только стандартную библиотеку и только расширю ее. Это была моя причина, если мое реальное решение верное, и мне нужны несколько советов по этому поводу.

Cris Night 25.10.2018 07:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Простое решение для страницы компонентов - !defineMUI_COMPONENTSPAGE_SMALLDESC или MUI_COMPONENTSPAGE_NODESC, это увеличит список компонентов.

Если этого недостаточно, лучшим решением будет создание собственного пользовательского интерфейса. Для этого вам нужно будет использовать Resource Hacker или какой-либо другой редактор .EXE, но это одноразовая операция, вам не нужно распространять редактор, просто созданный файл пользовательского интерфейса вместе с вашим .NSI, если другим людям также нужно скомпилировать ваш установщик. Возьмите ...NSIS\Contrib\UIs\modern.exe и отредактируйте его в соответствии с вашими потребностями, а затем примените его с помощью MUI_UI (или ChangeUI для классических установщиков).

Преимущество этого заключается в том, что вы будете работать с блоки диалога, а не с пикселями, и также не требуются навыки программирования.

Последний вариант - сделать это во время выполнения. Это означает, что большую часть времени вы будете работать в пикселях, поэтому вам не нужно жестко кодировать какие-либо размеры. Чтобы использовать Системный плагин, вы должны быть знакомы с программированием Win32. Также помогает знание C / C++ или другого низкоуровневого языка программирования.

!include MUI2.nsh
!insertmacro MUI_PAGE_WELCOME
!define MUI_COMPONENTSPAGE_NODESC
!define MUI_PAGE_CUSTOMFUNCTION_SHOW fullsize_tweak_components_page
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

!define /ifndef SWP_NOZORDER 4
!define /ifndef SWP_NOACTIVATE 0x10
Function fullsize_tweak_components_page
System::Call 'USER32::GetClientRect(p $mui.ComponentsPage, @ r0)' ; Get the size of the inner dialog
System::Call '*$0(i,i,i.r3,i.r4)' ; Extract the right and bottom members from RECT
System::Call 'USER32::SetWindowPos(p $mui.ComponentsPage.Components, p 0, i 0, i 0, i $3, i $4, i ${SWP_NOZORDER}|${SWP_NOACTIVATE})' ; Resize the components list
FunctionEnd

Ваше решение очень помогло мне решить мою проблему, я использовал для этого способ win32

Cris Night 26.10.2018 09:49

Другие вопросы по теме