2017-11-21 14 views
0

단추가 발견 된 파일 경로에서 런타임으로 만들어진 radiobuttons 페이지로 Windows 설치 프로그램을 만들려고합니다. 그러나 라디오 버튼 생성에만 첫 번째 파일 경로 만 사용됩니다. MessageBox 줄 주석 처리를 제거하면 모든 파일 경로가 표시됩니다. 아무도 나 좀 도와 줄래? 당신이 50 %로 높이를 설정하고 라디오 컨트롤이 투명하지 않기 때문에NSIS 런타임이 단추를 만들지 않았 음

감사

컨트롤 모두가
Function getButtons 
    nsDialogs::Create 1018 
    Pop $dialog 
    ${NSD_CreateGroupBox} 0 0 100% 100% "These DLLs were found installed" 
    # get available plugins 
    ${locate::Open} "$dllDir" `/F=1 /D=0 /M=*.dll /B=1` $0 
    StrCmp $0 0 0 loop 
    MessageBox MB_OK "Error! No DLL files found..., $dllDir" IDOK close 

    loop: 
    # counter for y value 
    StrCpy $R1 10 
    # find possible plugins for installation 
    ${Do} 
    ${locate::Find} $0 $1 $2 $3 $4 $5 $6 
    ${If} $1 == "" 
     ${ExitDo} 
    ${EndIf} 
    ;MessageBox MB_OK "Path=$1" IDOK 
    # calculate radiobutton y value 
    IntOp $R1 $R1 + 20 
    ${NSD_CreateRadioButton} 20 $R1 100% 50% "$1" 
    Pop $hwnd 
    nsDialogs::SetUserData $hwnd "$1" 
    ${NSD_OnClick} $hwnd RadioClick 
    ${Loop} 
    close: 
    ${locate::Close} $0 
    ${locate::Unload} 
    nsDialogs::Show 
FunctionEnd 

답변

0

, 그들은 단지 볼 수 없습니다.

${NSD_CreateRadioButton} 20 $R1 100% 50% "$1" 
Pop $hwnd 
SetCtlColors $hwnd SYSCLR:8 Transparent ; NSIS 3.1+ 
${NSD_AddExStyle} $hwnd ${WS_EX_TRANSPARENT} ; https://blogs.msdn.microsoft.com/oldnewthing/20121217-00/?p=5823 

을하지만 NSIS 문서는이에 대해 경고 :

당신은 그 투명하게 만들 수 있습니다 사용하는 경우 제대로 작동하지 않을 수 있습니다 투명 체크 박스의 배경색을 설정 :

경고 XPStyle on. 특정 Windows 테마를 사용하는 경우 투명 대신 배경이 완전히 검은 색이 될 수 있습니다.

처음부터 제대로 컨트롤의 크기를 바로하는 것이 좋습니다 :

!include nsDialogs.nsh 

Page Custom getButtons 
Page InstFiles 

var hwnd 

Function getButtons 
nsDialogs::Create 1018 
Pop $0 

${NSD_CreateGroupBox} 0 0 100% 100% "These DLLs were found installed" 
Pop $0 

StrCpy $R1 0 ; Measured in dialog units, not pixels 
FindFirst $0 $1 "$sysdir\sh*.dll" 
loop: 
    StrCmp $1 "" end 
    IntOp $R1 $R1 + 12 
    ${NSD_CreateRadioButton} 5u $R1u -20 12u "$1" 
    Pop $hwnd 
    nsDialogs::SetUserData $hwnd "$1" 
    ${NSD_OnClick} $hwnd RadioClick 
    FindNext $0 $1 
    Goto loop 
end: 
FindClose $0 

nsDialogs::Show 
FunctionEnd 

당신은 당신이 '돈 있도록 목록 상자를 사용하는 것이 좋습니다 후 얼마나 많은 파일 모르는 경우 대화 상자의 공간이 부족합니다.

+0

고맙습니다. 지금은 정상적으로 작동합니다. –