WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Dialog Editor version 6.X
plus
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Simple Timer Procedure Example


Generally in dialogs you don't want to have code that infinitely loops and never returns to the dialog procedure, otherwise you will see the CPU get pegged and the dialog becomes non responsive. In order to get around this you can use a Timer procedure. Basically this procedure executes at what ever time increment you want (i.e. 1 second intervals). Much like you can add a TimeDelay to a While Loop to slow down processing.

Anytime you are considering adding a While loop to your Dialog Callback, you should probably be using a Timer procedure instead. Take any code, that you would normally execute within the While loop and place it inside the timer procedure.

Say for example, you only want to execute the timer procedure when a button is pushed, you can enable the timer procedure when the Go button is pressed, and disable the timer procedure when the Stop button is pressed. You would use the DialogProcOption function to enable and disable the Timer procedure within the appropriate button pressed procedures.



#DefineSubRoutine InitDialogConstants()
   ;DialogprocOptions Constants
   MSG_INIT=0                ; The one-time initialization
   MSG_TIMER=1               ; Timer event
   MSG_BUTTONPUSHED=2        ; Pushbutton or Picturebutton
   MSG_RADIOPUSHED=3         ; Radiobutton clicked
   MSG_CHECKBOX=4            ; Checkbox clicked
   MSG_EDITBOX=5             ; Editbox or Multilinebox
   MSG_FILESELECT=6          ; Filelistbox
   MSG_ITEMSELECT=7          ; Itembox
   MSG_COMBOCHANGE=8         ; Combobox/Droplistbox
   MSG_CALENDAR=9            ; Calendar date change
   MSG_SPINNER=10            ; Spinner number change
   MSG_CLOSEVIA49=11         ; Close clicked (Enabled via Intcontrol 49)
   MSG_FILEBOXDOUBLECLICK=12 ; Get double-click message on a FileListBox
   MSG_ITEMBOXDOUBLECLICK=13 ; Get double-click message on an ItemBox
   MSG_COMEVENT=14           ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)

   DPO_DISABLESTATE=1000     ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
   DPO_CHANGEBACKGROUND=1001 ; -1=Get Current otherise bitmap or color string
   DPO_CHANGESYSMENU=1002    ; -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max
   DPO_CHANGETITLE=1003      ; Set/Get Dialog Title - (-1 to get)

   ;DialogControlState Constants
   DCSTATE_SETFOCUS=1        ; Give Control Focus
   DCSTATE_QUERYSTYLE=2      ; Query control's style
   DCSTATE_ADDSTYLE=3        ; Add control style
   DCSTATE_REMOVESTYLE=4     ; Remove control style
   DCSTATE_GETFOCUS=5        ; Get control that has focus

   DCSTYLE_INVISIBLE=1       ; Set Control Invisible
   DCSTYLE_DISABLED=2        ; Set Control Disabled
   DCSTYLE_NOUSERDATA=4      ; Note: Setable via DialogControlState function ONLY SPINNER control only
   DCSTYLE_READONLY=8        ; Sets control to read-only (user cannot type in data) EDITBOX MULTILINEBOX SPINNER
   DCSTYLE_PASSWORD=16       ; Sets 'password mode' where only *'s are displayed EDITBOX
   DCSTYLE_DEFAULTBUTTON=32  ; Sets a button as the default button PUSHBUTTON PICTUREBUTTON
   DCSTYLE_DIGITSONLY=64     ; Set edit box to accept digits only EDITMOX MULTILINEBOX
   DCSTYLE_FLAT=128          ; Makes a 'flat' hyperlink-looking button PUSHBUTTON PICTUREBUTTON
   DCSTYLE_NOADJUST=256      ; Turns off auto-height adjustment  ITEMBOX FILELISTBOX
   DCSTYLE_TEXTCENTER=512    ; Center text in control VARYTEXT STATICTEXT
   DCSTYLE_TEXTRIGHT=1024    ; Flush-Right text in control VARYTEXT STATICTEXT
   DCSTYLE_NOSELCURLEFT=2048 ; No selection, cursor left EDITBOX MULTILINEBOX
   DCSTYLE_NOSELCURRIGHT=4096; No selection, cursor right EDITBOX MULTILINEBOX

   ;DialogControlSet / DialogControlGet Constants
   DC_CHECKBOX=1             ; CHECKBOX
   DC_RADIOBUTTON=2          ; RADIOBUTTON
   DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
   DC_TITLE=4                ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON
   DC_ITEMBOXCONTENTS=5      ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_ITEMBOXSELECT=6        ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_CALENDAR=7             ; CALENDAR
   DC_SPINNER=8              ; SPINNER
   DC_MULTITABSTOPS=9        ; MULTILINEBOX
   DC_ITEMSCROLLPOS=10       ; ITEMBOX FILELISTBOX
   DC_BACKGROUNDCOLOR=11     ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX
   DC_PICTUREBITMAP=12       ; PICTURE PICTUREBUTTON
   DC_TEXTCOLOR=13           ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FIELLISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX
   DC_ITEMBOXADD=14          ; ITEMBOX FILELISTBOX DROPLISTBOX
   DC_ITEMBOXREMOVE=15       ; ITEMBOX FILELISTBOX DROPLISTBOX


   ;DialogObject constants
   DLGOBJECT_ADDEVENT=1      ; Call dialog callback when the specified event occurs
   DLGOBJECT_STOPEVENT=2     ; Stop calling dialog callback when an event previously requested with
   DLGOBJECT_GETOBJECT=3     ; Return an object references to the specified control
   DLGOBJECT_GETPICTURE=4    ; Create and return an object reference to a picture object

   ;Return code constants
   RET_DO_CANCEL=0           ; Cancels dialog
   RET_DO_DEFAULT= -1        ; Continue with default processing for control
   RET_DO_NOT_EXIT= -2       ; Do not exit the dialog
   Return
#EndSubRoutine

;============================================================

#DefineFunction SampleCallbackProc(Sample_Handle,Sample_Message,Sample_ID,Sample_EventInfo,rsvd)
   InitDialogConstants()                                    ; Initialize Dialog Constants
   Switch Sample_Message                                    ; Switch based on Dialog Message type
     Case MSG_INIT                                         ; Standard Initialization message
         DialogProcOptions(Sample_Handle,MSG_BUTTONPUSHED,@TRUE)
         Return(RET_DO_DEFAULT)

     Case MSG_TIMER
          ;Get Value of VaryText Control
          mycounter = DialogControlGet( Sample_Handle, 003, DC_TITLE )
          mycounter = mycounter+1
          DialogControlSet( Sample_Handle, 003, DC_TITLE, mycounter )
          Return(RET_DO_NOT_EXIT)

     Case MSG_BUTTONPUSHED
        Switch Sample_ID
           Case 001 ; Go
              ;Enable Timer Procedure
              DialogProcOptions(Sample_Handle,MSG_TIMER,1000)
              Return(RET_DO_NOT_EXIT)

           Case 002 ; Stop
              ;Disable Timer Procedure
              DialogProcOptions(Sample_Handle,MSG_TIMER,0)
              Return(RET_DO_NOT_EXIT)

           Case 004 ; Exit
              Return(RET_DO_CANCEL)

        EndSwitch
        Return(RET_DO_DEFAULT)

   EndSwitch                                                ; Sample_Message
   Return(RET_DO_DEFAULT)
#EndFunction                                                ; End of Dialog Callback SampleCallbackProc

COUNTER = 0
SampleFormat=`WWWDLGED,6.1`

SampleCaption=`Sample`
SampleX=002
SampleY=040
SampleWidth=232
SampleHeight=083
SampleNumControls=004
SampleProcedure=`SampleCallbackProc`
SampleFont=`DEFAULT`
SampleTextColor=`DEFAULT`
SampleBackground=`DEFAULT,DEFAULT`
SampleConfig=0

Sample001=`055,042,033,011,PUSHBUTTON,DEFAULT,"Go",1,1,32,DEFAULT,DEFAULT,DEFAULT`
Sample002=`116,042,033,011,PUSHBUTTON,DEFAULT,"Stop",2,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
Sample003=`038,020,132,011,VARYTEXT,COUNTER,COUNTER,DEFAULT,3,512,"Microsoft Sans Serif|8192|40|34","0|0|0",DEFAULT`
Sample004=`086,058,033,011,PUSHBUTTON,DEFAULT,"Exit",0,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

ButtonPushed=Dialog("Sample")


Article ID:   W16924
File Created: 2007:07:03:14:27:06
Last Updated: 2007:07:03:14:27:06