2012-03-12 15 views
0

私はかなり質問しているものをしようとしていますhereしかし、構文の複雑さと時間の不足のため、私はこれを手伝ってくれる人が必要です。NSISライセンスページの2つのチェックボックス

2つのチェックボックスを1つではなく2つ表示するように努力しましたが、失敗しています。 NSISの構文は私を殺しており、私はそのパラメータを2番目のUSER32::CreateWindowExに得ることはできません。私は最初のものの下(または右)に2番目のチェックボックスを表示したいと思います。

これまでのところ、私は次の修正を行っていますが、これは2番目のチェックボックスを作成していないようです(残りのコードについては元の記事を参照してください)。

; ---<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

あなたは(あなたが唯一のまたは単純な数字を缶)システム::コールにir6+100のような計算を行うことはできませんあなたは第二のチェックボックスを作成する前に、IntOp $6 $6 + 100を試してみてください。

編集:それの右側に追加された他の制御は、その背後に表示されますので、

コード他の回答からも、ダイアログとしてチェックボックスに同じ幅を与えました。

あなたにも最初のチェックボックスのサイズを調整する必要があります。

... 
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' 
... 
+0

もあることしようとしました。効果がないようでした。私はちょうど最初のチェックボックスを参照してください。 – wpfwannabe

+0

@wpfwannabe:最初のチェックボックスの幅を狭くしなければならないかもしれない – Anders

+0

それだけです。ありがとう!私は垂直レイアウトを探していたが、これはちょうどトリックを行うかもしれない。 – wpfwannabe

関連する問題