Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 352
Благодарности: 192

Профиль | Отправить PM | Цитировать


MKN, для вновь создаваемых окон-детей (в терминологии WinAPI) нужно в функции CreateWindowEx указать дескриптор окна-родителя.
В качестве микро-дополнения к моему примеру на прошлой странице:
Код: Выделить весь код
    ${NSD_CreateCheckBox} 40u 5u 40u 20u "111.1"
    Pop $hChildButton1
    System::Call 'user32::SetParent(i$hChildButton1,i$hButtonOpt11)i.R0'
SetParent поменяет родителя с окна nsDialogs на кнопку $hButtonOpt11, координаты x,y будут задавать положение относительно нового родителя.
Тоже самое можно сделать и через System::Call 'user32::CreateWindowEx... + SendMessage ... ${WM_SETFONT}

Такие детки будут прятаться/показываться/перемещатся вместе с родителем.
Сразу проблема - навешивание функций-обработчиков через ${NSD_OnClick} и т.п. не работает для таких деток. Так как события получает родитель, который должен иметь обработчик этих событий. Обработчик написать не проблема, а вот как в nsis получить дескриптор функции-обработчика (необходим для установки функции обработчиком) - хз
Доступное костыльное решение (больше костылей богу костылей!) -- менять родителя туда-сюда (окно nsDialogs <--> своё окно)


Минимальный пример не помешал бы для более конструктивного обсуждения и во избежание путаницы в терминах. А ещё лучше - короткий рассказ, зачем городить такую жесть на столь ограниченной платформе как nsis

Последний раз редактировалось iglezz, 21-03-2023 в 11:04.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:16, 20-03-2023 | #2684