tests/nsis3/share/doc/nsis/Examples/nsDialogs/timer.nsi

Summary

Maintainability
Test Coverage
!include LogicLib.nsh
!include nsDialogs.nsh
!include WinMessages.nsh

Name "nsDialogs Timer Example"
OutFile "nsDialogs Timer Example.exe"
XPStyle on
RequestExecutionLevel user

Var DIALOG
Var TEXT
Var PROGBAR
Var PROGBAR2
Var PROGBAR3
Var BUTTON
Var BUTTON2

Page custom nsDialogsPage
!pragma warning disable 8000 ; "Page instfiles not used, no sections will be executed!"

Function OnTimer

    SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1
    ${If} $1 = 100
        SendMessage $PROGBAR ${PBM_SETPOS} 0 0
    ${Else}
        SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0
    ${EndIf}

FunctionEnd

Function OnTimer2

    SendMessage $PROGBAR2 ${PBM_GETPOS} 0 0 $1
    ${If} $1 = 100
        SendMessage $PROGBAR2 ${PBM_SETPOS} 0 0
    ${Else}
        SendMessage $PROGBAR2 ${PBM_DELTAPOS} 5 0
    ${EndIf}

FunctionEnd

Function OnTimer3

    SendMessage $PROGBAR3 ${PBM_GETPOS} 0 0 $1
    ${If} $1 >= 100
        ${NSD_KillTimer} OnTimer3
        MessageBox MB_OK "Timer 3 killed"
    ${Else}
        SendMessage $PROGBAR3 ${PBM_DELTAPOS} 2 0
    ${EndIf}

FunctionEnd

Function OnClick

    Pop $0

    ${NSD_KillTimer} OnTimer

FunctionEnd

Function OnClick2

    Pop $0

    ${NSD_KillTimer} OnTimer2

FunctionEnd

Function nsDialogsPage

    nsDialogs::Create 1018
    Pop $DIALOG

    ${NSD_CreateLabel} 0u 0u 100% 9u "nsDialogs timer example"
    Pop $TEXT

    ${NSD_CreateProgressBar} 0u 10u 100% 12u ""
    Pop $PROGBAR

    ${NSD_CreateButton} 0u 25u 100u 14u "Kill Timer 1"
    Pop $BUTTON
    ${NSD_OnClick} $BUTTON OnClick

    ${NSD_CreateProgressBar} 0u 52u 100% 12u ""
    Pop $PROGBAR2
    SendMessage $PROGBAR2 ${PBM_SETBARCOLOR} 0 0x0000FF ; No visual styles
    SendMessage $PROGBAR2 ${PBM_SETSTATE} ${PBST_ERROR} 0 ; Vista+

    ${NSD_CreateButton} 0u 67u 100u 14u "Kill Timer 2"
    Pop $BUTTON2
    ${NSD_OnClick} $BUTTON2 OnClick2

    ${NSD_CreateProgressBar} 0u 114u 100% 12u ""
    Pop $PROGBAR3

    ${NSD_CreateTimer} OnTimer 1000
    ${NSD_CreateTimer} OnTimer2 100
    ${NSD_CreateTimer} OnTimer3 200

    nsDialogs::Show

FunctionEnd

Section
SectionEnd