Два флажка на странице лицензии NSIS - PullRequest
0 голосов
/ 12 марта 2012

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

Я потратил пару часов, пытаясь показать ДВА галочки вместо одного, но я продолжаю терпеть неудачу.Синтаксис NSIS убивает меня, и я не могу правильно передать параметры для второго USER32::CreateWindowEx.Я хочу отобразить второй флажок ниже (или справа) от первого.

До сих пор я сделал следующие изменения, но, кажется, это не создает второй флажок (см. Оригинальный постдля остальной части кода).

; ---<snip>---
System::Call 'USER32::CreateWindowEx(i0,t "Button",t "Some option",i ${__NSD_CheckBox_STYLE},ir6,ir7,ir8,ir9,ir0,i666,i0,i0)i.r2'
System::Call 'USER32::CreateWindowEx(i0,t "Button",t "Second option",i ${__NSD_CheckBox_STYLE},ir6+100,ir7,ir8,ir9,ir0,i667,i0,i0)i.r3'
SendMessage $0 ${WM_GETFONT} 0 0 $0
SendMessage $2 ${WM_SETFONT} $0 1
SendMessage $3 ${WM_SETFONT} $0 1
${NSD_SetState} $2 1 ;check it
${NSD_SetState} $3 1 ;check it
FunctionEnd

Function licleave
FindWindow $5 "#32770" "" $HWNDPARENT
GetDlgItem $0 $5 666
GetDlgItem $1 $5 667
${NSD_GetState} $0 $0
${NSD_GetState} $1 $1
MessageBox mb_ok "Checkbox=$0 $1"
FunctionEnd

1 Ответ

1 голос
/ 12 марта 2012

Вы не можете выполнять математику, как ir6+100 в системном вызове (Вы можете использовать только ИЛИ простые числа), попробуйте IntOp $6 $6 + 100 перед тем, как создать второй флажок.

Edit:

Код из другого ответа также дал флажку ту же ширину, что и диалоговое окно, так что любой другой элемент управления, добавленный справа от него, появится за ним.

Также необходимо настроить размер первого флажка:

...
IntOp $8 $8 / 2 ; Use half the width
System::Call 'USER32::CreateWindowEx(i0,t "Button",t "Some option",i ${__NSD_CheckBox_STYLE},ir6,ir7,ir8,ir9,ir0,i666,i0,i0)i.r2'
IntOp $6 $6 + $8 ; Offset 2nd checkbox by the width of the first
System::Call 'USER32::CreateWindowEx(i0,t "Button",t "Other option",i ${__NSD_CheckBox_STYLE},ir6,ir7,ir8,ir9,ir0,i667,i0,i0)i.r3'
...
...