Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Все что угодно..
Пример использования таймера - системный цикл »
Нет, я имел виду продвижение полосы бара, но только справа на лева (задом на перёд)
kotkovets
05-10-2011, 17:43
Нет, я имел виду продвижение полосы бара, но только справа на лева (задом на перёд) »
!include LogicLib.nsh
!include nsDialogs.nsh
Name "nsDialogs Timer Example"
OutFile "nsDialogs Timer Example.exe"
XPStyle on
Var DIALOG
Var TEXT
Var PROGBAR
Var Button
Page custom nsDialogsPage
Function CreateFile
Pop $Button
SendMessage $PROGBAR ${PBM_SETPOS} 0 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
${ForEach} $1 0 100 + 10
Sleep 300 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
${Next}
${ForEach} $1 100 0 - 10
Sleep 300 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} -10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
${Next}
FunctionEnd
Function nsDialogsPage
nsDialogs::Create 1018
Pop $DIALOG
${NSD_CreateLabel} 0u 0u 100% 9u ""
Pop $TEXT
${NSD_CreateProgressBar} 0u 10u 100% 12u "99"
Pop $PROGBAR
${NSD_CreateButton} 90u 70u 70u 12u "Запуск"
Pop $Button
${NSD_OnClick} $Button CreateFile
nsDialogs::Show
FunctionEnd
Section
SectionEnd
MKN специально для тебя :)
!include MUI2.nsh
Name "nsDialogs Timer Example"
OutFile "nsDialogs Timer Example.exe"
XPStyle on
Var DIALOG
Var TEXT
Var PROGBAR
Var Label
Var CheckBox
Var Check
Page custom nsDialogsPage nsDialogsPageDestroy
Page custom nsInstall
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Function nsDialogsPage
nsDialogs::Create 1018
${NSD_CreateLabel} 50u 0u 270u 25u \
"$\tДобро Пожаловать!$\nотметьте чекбокс для продолжения!"
Pop $Label
CreateFont $1 "Times New Roman" "13" "700"
SendMessage $Label ${WM_SETFONT} $1 1
Pop $Label
${NSD_CreateCheckBox} 50u 30u 80u 13u "создать файл"
Pop $CheckBox
nsDialogs::Show
FunctionEnd
Function nsDialogsPageDestroy
${NSD_GetState} $CheckBox $Check
FunctionEnd
Function nsInstall
${IfThen} $Check != 1 ${|} Return ${|}
nsDialogs::Create 1018
Pop $DIALOG
${NSD_CreateLabel} 0u 0u 100% 9u ""
Pop $TEXT
${NSD_CreateProgressBar} 0u 10u 100% 12u "99"
Pop $PROGBAR
${NSD_CreateTimer} CreateFile 1
nsDialogs::Show
FunctionEnd
Function CreateFile
${NSD_KillTimer} CreateFile
FileOpen $4 text.txt a
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
SendMessage $PROGBAR ${PBM_SETPOS} 0 0
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
Sleep 500 ;пауза для наглядности
SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
${NSD_SetText} $Text $1%
FileWrite $4 "${__FUNCTION__} $1$\r$\n"
FileClose $4
FunctionEnd
Section
SectionEnd
Добрый день
нужен совет в таком деле.
используем кастомные странички и кастомный UI.exe
хочется на кастомных страничках, рядом со стандартными кнопками.
Я "ресхаком" растянул диалог 1018 на все окно и теперь соответственно стандартных кнопок не видно.
точнее он становятся видимыми, когда в тех местах, где они должны быть, поводить мышкой.
пробовал кнопки "опустить ниже" не знаю как объяснить. Что бы он были как бы на переднем плане.
не помогает.
пробовал в скрипте прописывать, что он видимые
что то типа
ShowWindow .... ${SW_HIDE}
результат тот же
подскажите, можно ли диалог 1018 растянуть на все окно и что-бы стандартные кнопки при этом были видимыми?
1018 и 1044 имеют похожий размер но используются по разному.
1044 для окна Приветствия и Финального
1018 для всех остальных.
Можете создать свой любой другой контрол, к примеру 1304 и растягивать его как вам угодно,
но учтите, что один контрол может перекрывать другой, здесь последовательность очень важна.
Мало того, вы можете добавить графику
CONTROL "", 1304, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 332, 222
Чтобы рисунок заполнял всё окно, без просветов, мона даже нуна так
CONTROL "", 1304, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE, 65534, 65534, 334, 224
Но всё это можно сделать и по другому не трогая форму а вставить соответствующий макрос в скрипт
--
Можете создать свой любой другой контрол, к примеру 1304 и растягивать его как вам угодно,
но учтите, что один контрол может перекрывать другой, здесь последовательность очень важна. »
так какая разница?
я могу растянуть 1018 использовать его так?
но когда растягиваю то получаю не то что надо.
те кнопки есть но они появляются когда там мышкой проведешь....
при этом, как и писал ранее я кнопки переместил в ресхаке
сначала 1018, потом кнопки
и в ресхаке их видно
вроде все логично
скорее всего я что-то не так делаю...хз...
kotkovets
05-10-2011, 22:20
yyv, А вот чем не устраивает 1044....
!include "MUI2.nsh"
Page custom nsDialogsPage
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
Name "nsDialogs Timer Example"
OutFile "nsDialogs Example.exe"
Var DIALOG
Function HideControls
LockWindow on
GetDlgItem $0 $HWNDPARENT 1028
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1256
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1035
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1037
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1038
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1039
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1045
ShowWindow $0 ${SW_HIDE}
LockWindow off
FunctionEnd
Function ShowControls
LockWindow on
GetDlgItem $0 $HWNDPARENT 1028
ShowWindow $0 ${SW_NORMAL}
GetDlgItem $0 $HWNDPARENT 1256
ShowWindow $0 ${SW_NORMAL}
GetDlgItem $0 $HWNDPARENT 1035
ShowWindow $0 ${SW_NORMAL}
GetDlgItem $0 $HWNDPARENT 1037
ShowWindow $0 ${SW_NORMAL}
GetDlgItem $0 $HWNDPARENT 1038
ShowWindow $0 ${SW_NORMAL}
GetDlgItem $0 $HWNDPARENT 1039
ShowWindow $0 ${SW_NORMAL}
GetDlgItem $0 $HWNDPARENT 1045
ShowWindow $0 ${SW_NORMAL}
LockWindow off
FunctionEnd
Function nsDialogsPage
nsDialogs::Create 1044
Pop $DIALOG
Call HideControls
nsDialogs::Show
Call ShowControls
FunctionEnd
Section
SectionEnd
так какая разница?
я могу растянуть 1018 использовать его так? »
Вы бы лучше объяснили, что вы хотите в конце получить!
Я немного догадываюсь, что вы хотите сделать, вы можете поступить немного иначе.....
Может вам проще будет использовать SpiderBanner плагин, он примерно в стиле MSI.
Он автоматом скрывает окно NSIS на время выполнения, после окно NSIS восстанавливается.
Я наверное действительно плохо объясняю. попробую еще раз
вот код 105 диалога из ресхака
105 DIALOGEX 0, 0, 440, 285
STYLE DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION ""
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS SHELL DLG"
{
CONTROL "", 1018, STATIC, SS_LEFT | WS_CHILD, 0, 0, 440, 265
CONTROL "", 1044, STATIC, SS_LEFT | WS_CHILD, 0, 0, 440, 266
CONTROL "", 1256, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 8, 260, 96, 15
CONTROL "", 1028, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 8, 260, 97, 15
CONTROL "", 3, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 281, 258, 67, 18
CONTROL "", 1, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 362, 258, 67, 18
CONTROL "", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 116, 258, 67, 18
}
не суть важно, буду я рисовать в 1018 или в 1044 контроле. результат везде один и тот же.
сейчас, к примеру, я использовал контрол 1044
я его растянул не на весь диалог, а на середину кнопок, чтобы было более наглядно.
вот скрины
на этом
http://hostingkartinok.com/thumb/01201110/eab808208b6c9fa68f6e04256fff21ed.png (http://hostingkartinok.com/show-image.php?id=eab808208b6c9fa68f6e04256fff21ed)
видно. что кнопки на половину закрыты (если бы контрол 1044 был растянут на весь диалог, то кнопок не было бы видно совсем)
вот второй скрин
http://hostingkartinok.com/thumb/01201110/30bac9e4c32de4ac34a21e414b2f7641.png (http://hostingkartinok.com/show-image.php?id=30bac9e4c32de4ac34a21e414b2f7641)
это состояние кнопки после того как на ней поводить мышкой, она появляться.
мне нужно, что бы контрол был растянут на весь диалог. И что бы стандартные кнопки при этом был видны сразу.
пробовал разные сочетания этих конструкций
GetDlgItem $R2 $HWNDPARENT 1
EnableWindow $R2 1
ShowWindow $R2 ${SW_SHOW}
ShowWindow $R2 ${SW_NORMAL}
результат такой же
если что-то еще не понятно, спрашиваете, попытаюсь объяснить.
kotkovets
06-10-2011, 16:04
yyv, Я все прекрасно понял, что вы хотите! поэтому предложил 1044 в своем примере
Вы не добьетесь желаемого результата стандартными средствами NSIS, для этого есть плагины
или написать свой плагин, коль разбираетесь в языках программирования, хотя не факт,
каким то образом можно сделать плагином system -
входящий в комплект стандартной поставки NSIS - вызовами WinAPI.
Я имею ввиду, 1044 растянуть до кнопок, а на поверх кнопок, наложить фоновую картинку
под цвет основного фона, примерно как это сделано в ExperienceUI
и за одно можно наложить текстуру кнопок под цвет фона - есть такой плагин на офф.сайте
kotkovets, дело в том, что мне нужно не просто растянуть контрлол на весь диалог, а мне нужна возможность рисовать необходимые мне элементы в нижней части.
например добавить чекбокс между кнопками
или возле кнопки добавить лейбл и картинку
и я уже завис совсем и ни чего не понимаю...
вот к примеру
я создаю страницу
; dialog create function
Function fnc_CustomLicensePage_Create
; === CustomLicensePage (type: Dialog) ===
nsDialogs::Create 1044
Pop $hCtl_CustomLicensePage
${If} $hCtl_CustomLicensePage == error
Abort
${EndIf}
.....
......
.....
FunctionEnd
; dialog show function
Function fnc_CustomLicensePage_Show
Call fnc_CustomLicensePage_Create
nsDialogs::Show $hCtl_CustomLicensePage
FunctionEnd
и в диалоге у меня к примеру контрол Static например 1149
если я добавлю
после Show
nsDialogs::Create 1149 то это же я так понимаю не правильно....
как мне на этом контроле на одной страничке также с помощью nsDialogs (ну или с любой другой помощью) нарисовать нужные мне элементы?
или я все таки не понимаю самой сути процесса?
появилась идея.. попробую вечером...
но вопрос открыт :)
вот код 105 диалога из ресхака »
105 DIALOGEX 0, 0, 440, 285
STYLE DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION ""
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Shell Dlg"
{
CONTROL "", 1099, STATIC, SS_LEFT | WS_CHILD | WS_GROUP, 0, 0, 440, 253
CONTROL "", 1055, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE, 0, 253, 440, 32
CONTROL "", 1018, STATIC, SS_LEFT | WS_CHILD, 0, 0, 440, 252
CONTROL "", 1044, STATIC, SS_LEFT | WS_CHILD, 0, 0, 440, 252
CONTROL "", 1256, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 8, 260, 96, 15
CONTROL "", 1028, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 8, 260, 97, 15
CONTROL "", 3, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 281, 258, 67, 18
CONTROL "", 1, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 362, 258, 67, 18
CONTROL "", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 116, 258, 67, 18
}
Вместо 1018 или 1044, которые могут Вам ещё пригодится, использовал 1099, контрол 1055 используйте для подложки цвета в тон вашего основного.
Также рекомендую использовать плагин SkinnedControls
kotkovets,
Всё-таки никак не решён вопрос - как произвести все необходимые действия на одной единственной кастомной странице ?
И выбор чекбоксов и выполнение задачи с индикацией прогресса. Не создавая более никаких других страниц !
kotkovets
06-10-2011, 17:43
MKN, а в чем проблема? рисуем страничку со всем необходимым, обрабатываем события, снимаем статусы чекбоксов или радиобутонов, назначаем событию функцию и в этой же назначенной функции изменяем позиции бара
и делаем все необходимые действия, оставаясь на этой же странице.
Function Install
${NSD_GetState} $CheckBox1 $Check1 ;снимаем статус чекбокса
${NSD_GetState} $RadioButton1 $rButton1 ;снимаем статус радиобатона
;;;
${If} $Check1 == 1 ;к примеру если отмечен чебокс_1
;пишем нужные команды, если отмечен чекбокс_1
${EndIf}
;;;
${If} $rButton1 == 1 ;к примеру если отмечен чебокс_1
;пишем нужные команды, если отмечен радиобатон_1
${EndIf}
;;
;;
FunctionEnd
Я уже привел кучу примеров и разложил все по полочкам, чет тут сложного, банальные действия.
А чтобы не морочиться прогрессом, используем стандартную страничку установки
!include "MUI2.nsh"
Page Custom pre post
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
OutFile "test.exe"
ShowInstDetails show
var dialog
var RadioButton1
var RadioButton2
var RadioButton3
var RadioButton4
var CheckBox1
var CheckBox2
var CheckBox3
var CheckBox4
var Check1
var Check2
var Check3
var Check4
var rButton1
var rButton2
var rButton3
var rButton4
var Button
var Button1
Function pre
nsDialogs::Create 1018
Pop $dialog
${NSD_CreateRadioButton} 0 0 40% 6% "Группа_1, Радио_1"
Pop $RadioButton1
${NSD_SetState} $RadioButton1 1 ;Группа_1, радио_1 при показе странички, делаем отмеченным
${NSD_CreateRadioButton} 0 12% 40% 6% "Группа_1, Радио_2"
Pop $RadioButton2
${NSD_AddStyle} $RadioButton1 ${WS_GROUP} ;определяем группу переключений 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
${NSD_CreateRadioButton} 50% 0 40% 6% "Группа_2, Радио_1"
Pop $RadioButton3
${NSD_SetState} $RadioButton3 1 ;Группа_2, радио_1 при показе странички, делаем отмеченным
${NSD_CreateRadioButton} 50% 12% 40% 6% "Группа_2, Радио_2"
Pop $RadioButton4
${NSD_AddStyle} $RadioButton3 ${WS_GROUP} ;определяем группу переключений 2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
${NSD_CreateButton} 0u 35u 138u 15u `Кнопка переключений радиобутонов`
Pop $Button
${NSD_OnClick} $Button ButtonClick
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
${NSD_CreateCheckBox} 0 65u 56u 12u "Чебокс_1"
Pop $CheckBox1
${NSD_CreateCheckBox} 0 85u 56u 12u "Чебокс_2"
Pop $CheckBox2
${NSD_CreateCheckBox} 150u 65u 56u 12u "Чебокс_3"
Pop $CheckBox3
${NSD_CreateCheckBox} 150u 85u 56u 12u "Чебокс_4"
Pop $CheckBox4
;все чебоксы отмечены
${NSD_SetState} $CheckBox1 1
${NSD_SetState} $CheckBox2 1
${NSD_SetState} $CheckBox3 1
${NSD_SetState} $CheckBox4 1
${NSD_CreateButton} 0u 100u 138u 15u `Кнопка переключений чекбоксов`
Pop $Button1
${NSD_OnClick} $Button1 ButtonClickCheckBox
nsDialogs::Show
FunctionEnd
Function ButtonClick ;функция обработки события нажатия кнопки
Pop $Button
${NSD_GetState} $RadioButton1 $rButton1
${NSD_GetState} $RadioButton2 $rButton2
${NSD_GetState} $RadioButton3 $rButton3
${NSD_GetState} $RadioButton4 $rButton4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Логика И-ИЛИ для группы 1
${If} $rButton1 == 1
${AndIf} $rButton2 == 0
${NSD_SetState} $RadioButton1 0
${NSD_SetState} $RadioButton2 1
${Else}
${NSD_SetState} $RadioButton1 1
${NSD_SetState} $RadioButton2 0
${EndIf}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Логика И-ИЛИ для группы 2
${If} $rButton3 == 1
${AndIf} $rButton4 == 0
${NSD_SetState} $RadioButton3 0
${NSD_SetState} $RadioButton4 1
${Else}
${NSD_SetState} $RadioButton3 1
${NSD_SetState} $RadioButton4 0
${EndIf}
FunctionEnd
Function ButtonClickCheckBox
Pop $Button1
;снимаем статусы чекбоксов:
${NSD_GetState} $CheckBox1 $Check1
${NSD_GetState} $CheckBox2 $Check2
${NSD_GetState} $CheckBox3 $Check3
${NSD_GetState} $CheckBox4 $Check4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Логика ИЛИ-ИЛИ для чекбоксов
${If} $Check1 == 1
${Orif} $Check2 == 1
${Orif} $Check3 == 1
${Orif} $Check4 == 1
${NSD_SetState} $CheckBox1 0
${NSD_SetState} $CheckBox2 0
${NSD_SetState} $CheckBox3 0
${NSD_SetState} $CheckBox4 0
${Else}
${NSD_SetState} $CheckBox1 1
${NSD_SetState} $CheckBox2 1
${NSD_SetState} $CheckBox3 1
${NSD_SetState} $CheckBox4 1
${EndIf}
FunctionEnd
Function post
;снимаем статусы радибутонов:
${NSD_GetState} $RadioButton1 $rButton1
${NSD_GetState} $RadioButton2 $rButton2
${NSD_GetState} $RadioButton3 $rButton3
${NSD_GetState} $RadioButton4 $rButton4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;снимаем статусы чекбоксов:
${NSD_GetState} $CheckBox1 $Check1
${NSD_GetState} $CheckBox2 $Check2
${NSD_GetState} $CheckBox3 $Check3
${NSD_GetState} $CheckBox4 $Check4
FunctionEnd
Section ""
${If} $Check1 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен чекбокс_1" IDOK
${EndIf}
;;;
${If} $Check2 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен чекбокс_2" IDOK
${EndIf}
;;;
${If} $Check3 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен чекбокс_3" IDOK
${EndIf}
;;;
${If} $Check4 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен чекбокс_4" IDOK
${EndIf}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
${If} $rButton1 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен радибутон_1" IDOK
${EndIf}
;;;
${If} $rButton2 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен радибутон_2" IDOK
${EndIf}
;;;
${If} $rButton3 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен радибутон_3" IDOK
${EndIf}
;;;
${If} $rButton4 == 1
MessageBox MB_ICONINFORMATION|MB_OK "Отмечен радибутон_4" IDOK
${EndIf}
SectionEnd
kotkovets,
Вроде разобрался с этим моментом (полтыщи строк, путаюсь очень...). Спасибо. Теперь никак не получается закрыть кастомную страницу (по сути закрыть скрипт, выйти из него) после :
MessageBox MB_OK "Файл успешно создан!" IDOK
Т.е. по окончании работы.
Почему то вообще не действует :
Section
SetAutoClose true
SectionEnd
kotkovets
06-10-2011, 18:43
Теперь никак не получается закрыть кастомную страницу (по сути закрыть скрипт, выйти из него) после :
Код:
MessageBox MB_OK "Файл успешно создан!" IDOK »
Добавь в конце функции "волшебную" команду
SendMessage $HWNDPARENT 0x408 1 0
Циферка 1 - означает переместиться на страничку вперед...
Function CreateFile
;---
MessageBox MB_OK "Файл успешно создан!" IDOK
SendMessage $HWNDPARENT 0x408 1 0
FunctionEnd
Было несколько решений реализации страницы Readme, наконец решил переделать по нормальному из страницы лицензии.
PageReadme_NSIS.zip (http://rghost.ru/24497131)
----
kotkovets
06-10-2011, 23:39
sawe, Все хорошо, но есть серьезные недостатки,
!include "MUI2.nsh"
!insertmacro MUI_PAGE_README "Читать.txt"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
ShowInstDetails show
OutFile test.exe
Section
SectionEnd
Смотрим лог компилятора:
4 warnings:
LangString "MUI_INNERTEXT_README_BOTTOM" is not set in language table of language Russian
LangString "MUI_TEXT_README_TITLE" is not set in language table of language Russian
LangString "MUI_TEXT_README_SUBTITLE" is not set in language table of language Russian
LangString "MUI_INNERTEXT_README_TOP" is not set in language table of language Russian
О чем это говорит? У вас не определены настройки по умолчанию, если в скрипте не задать константы.
Например, я в скрипте не указал цвет
!define MUI_READMEPAGE_BGCOLOR
то в хидере, делаем проверку на наличие этой константы и если она не указана, объявлем константу и задаем значение константы по умолчанию.
!ifndef MUI_READMEPAGE_BGCOLOR
!define MUI_READMEPAGE_BGCOLOR 0xFFFFFF
!endif
Дальше не стал смотреть... sawe в топку! :) Дорабатывайте!!!
sawe, подскажите, как мне подложить картинку в нужный мне контрол к примеру в 1055?
вот я рисую страничку используя nsDialogs::Create
не важно 1018 или 1044 или 1099
нарисовал, отобразил
как в контрол 1055 вставить нужную картинку? это нужно PRE функцию вызывать? или как?
вроде что-то получилось....
подскажите, как мне подложить картинку в нужный мне контрол к примеру в 1055? »
Если к контролу, то он должен иметь следующий вид:
----------
CONTROL "", 1055, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE, X, X, X, X
----------
Если я не ошибаюсь, то MUI2 функция PRE занята. Откройте NSIS\Contrib\Modern UI 2\Interface.nsh
и посмотрите, как реализуется следующее
----------
SetBrandingImage /IMGID=1055 /RESIZETOFIT "$PLUGINSDIR\картинка.bmp"
----------
или универсальный макрос
!macro BIMAGE IMAGE PARMS
Push $0
GetTempFileName $0
File /oname=$0 "${IMAGE}"
SetBrandingImage /IMGID=1055 /RESIZETOFIT "картинка.bmp"
Delete $0
Pop $0
!macroend
!define SMUI_PAGE_CUSTOMFUNCTION_SHOW BGImage
Function BGImage
!insertmacro BIMAGE "картинка.bmp" /RESIZETOFIT
FunctionEnd
В nsDialogs, если рисунок не перекрывается ни чем, делается просто
Var Dialog
Var BitmapX
Var BitmapX_Image
Function CustomShow
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateBitmap} 10u 6u 30u 30u ""
Pop $BitmapX
${NSD_SetImage} $BitmapX "$PLUGINSDIR\картинка.bmp" $BitmapX_Image
;-----
nsDialogs::Show
FunctionEnd
----
Смотрим лог компилятора: »
это связано с тем, что в каждый языковой файл следует добавить скорее всего английский README, или чухай затылок!
По быстрячку не прошло, бум карпеть!
sawe,
получилось
в этот момент там было очень много мата и слюней радости, ибо уже более трех дней бьюсь с этой проблемой :)
вот мой контрол
CONTROL "", 1139, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 250, 462, 43
а во так я делаю нужый мне фон нижнего края
GetDlgItem $back $HWNDPARENT 1139
SetCtlColors $back 0x000000 0xEBEBEB
вопрос теперь в другом
;)
как мне сделать фон в BrandingText нужным мне?
использую BrandingURL plug-in
пробую
GetDlgItem $0 $HWNDPARENT 1028
SetCtlColors $0 0x000000 0xEBEBEB
и здесь это вариант не проходит :(
фон системный серый...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC