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

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

Аватара для kotkovets

Ветеран


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

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


Цитата asetin_9207:
Так ведь страница выбора секции и страница ввода ника - разные страницы. Как они будт отражены? Я не понимаю »
Секции "Stryder emulator(для Garena)" и "Revolution Crew emulator(рекомендуемый) скрываем.
из справки:
Код: Выделить весь код
Section "-hidden section"
SectionEnd
Вот пример:
читать дальше »
Код: Выделить весь код
!include "MUI.nsh"
!include "nsDialogs.nsh"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
Page custom fnCustomInit fnCustomDestroy ;функция будет выполняться во время открытия стр. MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_Show Page
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

OutFile "test.exe"
InstallDir "$PROGRAMFILES\Left 4 Dead 2\"
ShowInstDetails show

Var Dialog
Var Label
Var Text
Var CheckBox
Var CheckBox1

Function fnCustomInit
nsDialogs::Create 1018
  Pop $Dialog

 !insertmacro MUI_HEADER_TEXT "Выбор ника" "  Ввод своего ника"
  
       ${NSD_CreateLabel} 0 5u 100u 10u "Введите свой ник"
                 Pop $Label
                 
       ${NSD_CreateText} 0 20u 100% 15u "Сюда ввожу ник"
                 Pop $Text
                 
       ${NSD_CreateCheckBox} 0 50u 235 10u "Revolution Crew emulator(рекомендуемый)"
                 Pop $CheckBox
                 ${NSD_OnClick}  $CheckBox Check
                 ${NSD_SetState} $CheckBox 1
                 
       ${NSD_CreateCheckBox} 0 70u 170 10u "Stryder emulator(для Garena)"
                 Pop $CheckBox1
                 ${NSD_OnClick}  $CheckBox1 Check1
                 ${NSD_SetState} $CheckBox1 0
nsDialogs::Show
FunctionEnd

Function Check
	Pop $CheckBox
	${NSD_GetState} $CheckBox $1
	${If} $1 == 1
	   ${NSD_SetState} $CheckBox1 0
	${Else}
            ${NSD_SetState} $CheckBox1 1
	${EndIf}
FunctionEnd

Function Check1
	Pop $CheckBox1
	${NSD_GetState} $CheckBox1 $1
	${If} $1 == 1
            ${NSD_SetState} $CheckBox 0
	${Else}
            ${NSD_SetState} $CheckBox 1
	${EndIf}
FunctionEnd

Function fnCustomDestroy
 ${NSD_GetText} $Text $Text
 ${NSD_GetState} $CheckBox $CheckBox
 ${NSD_GetState} $CheckBox1 $CheckBox1
FunctionEnd

Function Page
 StrCmp $Text "Сюда ввожу ник" 0 +3
 MessageBox MB_ICONEXCLAMATION "Введите ник!"
 Call GotoPage
 StrCmp $Text "" 0 +3
 MessageBox MB_ICONEXCLAMATION "Введите ник!"
 Call GotoPage
FunctionEnd

Function GotoPage ; Функция для произвольного перехода по страницам
  StrCpy $R9 -1
  IntCmp $R9 0 0 Move Move
  StrCmp $R9 "-1" 0 Move  ;-1 переход на предыдущую страницу
  StrCpy $R9 "120"
  Move:
  SendMessage $HWNDPARENT "0x408" "$R9" ""
FunctionEnd

Section "-Revolution Crew emulator(рекомендуемый)" ;скрываем секцию
 StrCmp $CheckBox 1 0 Next
 MessageBox MB_ICONINFORMATION|MB_OK "Revolution: отмечено"
 SetOutPath "$INSTDIR"
;File /r E:\stryder\*.*
 WriteIniStr "$INSTDIR\rev.ini" steamclient PlayerName $Text
 Next:
SectionEnd

Section "Секция"
SectionEnd

Section "-Stryder emulator(для Garena)" ;скрываем секцию
 StrCmp $CheckBox1 1 0 Next
 MessageBox MB_ICONINFORMATION|MB_OK "Stryder: отмечено"
 SetOutPath "$INSTDIR"
 ;File /r E:\revcrew\*.*
 WriteIniStr "$INSTDIR\stryder.ini" steamclient PlayerName $Text
 Next:
SectionEnd

Зависимость выбора сделал через CheckBox, хотя для этого есть RadioButton
Реализована корректность ввода ника.

Последний раз редактировалось kotkovets, 30-08-2010 в 04:24.

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

Отправлено: 00:59, 30-08-2010 | #668