Для разнообразия оформления прогрессбара, существует занятная библиотека -
SkinProgress.dll, использующая цвета
из внешних bmp файлов.
Код:
!AddPluginDir ".\"
!include MUI2.nsh
Page custom fnc_Create
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!define /math PBM_SETRANGE32 ${WM_USER} + 6
!define PB_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
!define PBS_MARQUEE 0x08
OutFile "test_ProgresBarSkin.exe"
Var dlg
Var PROGBAR
Function fnc_Create
nsDialogs::Create 1018
Pop $dlg
${NSD_CreateProgressBar} 0u 10u 100% 12u ""
Pop $PROGBAR
SkinProgress::Set $PROGBAR "$EXEDIR\color.bmp" "$EXEDIR\color_without_progress.bmp"
${NSD_CreateTimer} NSD_Timer.Callback 10 ; Need a timer to kickstart the marquee progressbar
nsDialogs::Show
FunctionEnd
Function NSD_Timer.Callback
SendMessage $PROGBAR ${PBM_SETMARQUEE} 1 50 ; start=1|stop=0 interval(ms)=+N
${NSD_KillTimer} NSD_Timer.Callback
SendMessage $PROGBAR ${PBM_SETRANGE32} 0 100
SendMessage $PROGBAR ${PBM_SETPOS} 20 0
Sleep 200
SendMessage $PROGBAR ${PBM_SETPOS} 30 0
Sleep 200
SendMessage $PROGBAR ${PBM_SETPOS} 40 0
Sleep 200
SendMessage $PROGBAR ${PBM_SETPOS} 50 0
Sleep 200
SendMessage $PROGBAR ${PBM_SETPOS} 60 0
Sleep 200
SendMessage $PROGBAR ${PBM_SETPOS} 100 0
SendMessage $PROGBAR ${PBM_SETMARQUEE} 0 0
FunctionEnd
Section
SectionEnd
Вот комплект-пример :