Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
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