Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
Keywords: TrackBar Track Bar TrackBar32 msctls_trackbar32 Scroll Slider Percentage 100% InitCommonControlsEx CreateWindowExA TBM_SETRANGE Set Range TBM_GETPOS Get Position
;*************************************************************************** ;** TrackBar32 in a WIL Dialog ;** ;** Purpose: Add TrackBar32 Controls to WIL Dialog ;** ;** http://msdn.microsoft.com/en-us/library/windows/desktop/ff486103(v=vs.85).aspx ;** http://www.minigui.org/api_ref/3.0.12_standalone/group__ctrl__trackbar__msgs.html ;** ;** Developer: Deana Falk 2014.05.06 ;*************************************************************************** GoSub UDFS MyDialogFormat=`WWWDLGED,6.2` MyDialogCaption=`TrackBar32` MyDialogX=-01 MyDialogY=-01 MyDialogWidth=300 MyDialogHeight=149 MyDialogNumControls=003 MyDialogProcedure=`MyDialogCallbackProc` MyDialogFont=`DEFAULT` MyDialogTextColor=`DEFAULT` MyDialogBackground=`DEFAULT,DEFAULT` MyDialogConfig=0 MyDialog001=`009,111,036,012,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",1,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog002=`071,111,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog003=`035,063,044,020,VARYTEXT,"VaryText_1",vtVariable1,"Vary 1",DEFAULT,30,DEFAULT,"Microsoft Sans Serif|10752|70|34","0|0|255",DEFAULT` ButtonPushed=Dialog("MyDialog") Pause('POSITION is',POSITION) Exit :UDFS #DefineFunction InitCommonControls(class) ComCtl32 = DirWindows(1):"ComCtl32.dll" COMMONCONTROLSEX=BinaryAlloc(8) ;Create buffer for CommonControlsEX buffer BinaryPoke4 (COMMONCONTROLSEX,0,8) BinaryPoke4 (COMMONCONTROLSEX,4,class) ICC=DllCall (ComCtl32,long:"InitCommonControlsEx",lpbinary:COMMONCONTROLSEX) BinaryFree (COMMONCONTROLSEX) ;Free CommonControlsEX buffer Return #EndFunction #DefineFunction TrackBarCreate(style,handle,startx,starty,width,height) user32 = DirWindows(1):"user32.dll" ;Trackbar32 styles WM_USER = 1024; 0x0400 TBS_AUTOTICKS = 1 ;The trackbar control has a tick mark for each increment in its range of values. TBS_VERT = 2;The trackbar control is oriented vertically. ;TBS_HORZ ;The trackbar control is oriented horizontally. This is the default orientation. TBS_TOP = 4;The trackbar control displays tick marks above the control. This style is valid only with TBS_HORZ. TBS_BOTTOM = 0 ;The trackbar control displays tick marks below the control. This style is valid only with TBS_HORZ. TBS_LEFT = 4;The trackbar control displays tick marks to the left of the control. This style is valid only with TBS_VERT. ;TBS_RIGHT ;The trackbar control displays tick marks to the right of the control. This style is valid only with TBS_VERT. TBS_BOTH = 8;The trackbar control displays tick marks on both sides of the control. This will be both top and bottom when used with TBS_HORZ or both left and right if used with TBS_VERT. ;TBS_NOTICKS ;The trackbar control does not display any tick marks. ;TBS_ENABLESELRANGE ;The trackbar control displays a selection range only. The tick marks at the starting and ending positions of a selection range are displayed as triangles (instead of vertical dashes), and the selection range is highlighted. ;TBS_FIXEDLENGTH ;The trackbar control allows the size of the slider to be changed with the TBM_SETTHUMBLENGTH message. ;TBS_NOTHUMB ;The trackbar control does not display a slider. WS_BORDER = 8388608 WS_CHILD = 1073741824 WS_VISIBLE = 268435456 ; Handle to dialog hinst = DllHinst("") Return DllCall(user32,long:"CreateWindowExA",long:512,lpstr:"msctls_trackbar32",lpstr:"Trackbar",long:WS_CHILD|WS_VISIBLE|TBS_AUTOTICKS|style,long:startx,long:starty,long:width,long:height,long:handle,long:0,long:hinst,long:0) #EndFunction #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 DialogProcOptions 1002 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) MSG_MENUITEM=15 ; MenuItem selected MSG_MENUITEMINIT=16 ; MenuItem initialized MSG_RESIZE=17 ; Dialog resized MSG_RVITEMSELROW=18 ; Reportview item select row MSG_RVDBLCLICKROW=19 ; Reportview double-click row MSG_RVCHECKEDITEM=20 ; Reportview checked/unchecked Item MSG_RVITEMTEXT=21 ; Reportview changed text of first column MSG_RVHEADER=22 ; Reportview header clicked 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) DPO_GETNAME=1004 ; Returns the name associated with a control's number. DPO_GETNUMBER=1005 ; Returns the number associated with a control's name. DPO_GETCLIENTAREA=1007 ; Returns a space delimited list of the width and height of the client area. ;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 DCSTATE_MOVEMOUSEOVER=6 ; Move the mouse over the control DCSTYLE_DEFAULT=0 ; Set Default Style 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 DCSTYLE_SHIELD=8192 ; Display Security Shield icon on button (Vista only) PUSHBUTTON PICTUREBUTTON DCSTYLE_MENUCHECK=32768 ; Adds a check mark to the left of a menu item MENUITEM DCSTYLE_MENURADIO=65536 ; Adds a radio button like dot graphic to the left of a menu item MENUITEM DCSTYLE_MENUSEP=131072 ; Separator bar graphic MENUITEM DCSTYLE_MENUBREAK=262144 ; Column break MENUBAR DCSTYLE_NOHEADER=524288 ; No header bar REPORTVIEW DCSTYLE_COLHEADER=1048576 ; First row column header REPORTVIEW DCSTYLE_GRIDLINES=2097152 ; Grid lines REPORTVIEW DCSTYLE_SELONEROW=4194304 ; Only one row can be selected at a time REPORTVIEW DCSTYLE_SELALLROW = 8388608 ; Highlight complete row REPORTVIEW DCSTYLE_SORTASC=16777216 ; Ascending sort REPORTVIEW DCSTYLE_SORTDESC=33554432 ; Descending sort REPORTVIEW DCSTYLE_EDITCOL=67108864 ; Edit first columns text REPORTVIEW DCSTYLE_COLCHECKBOX=134217728 ; Add checkbox to first column REPORTVIEW DCSTYLE_INSHEADER=268435456 ; Include column header text REPORTVIEW ;DialogControlSet / DialogControlGet Constants DC_CHECKBOX=1 ; CHECKBOX REPORTVIEW DC_RADIOBUTTON=2 ; RADIOBUTTON DC_EDITBOX=3 ; EDITBOX MULTILINEBOX DC_TITLE=4 ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON MENUITEM DC_ITEMBOXCONTENTS=5 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW DC_ITEMBOXSELECT=6 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW 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 REPORTVIEW DC_PICTUREBITMAP=12 ; PICTURE PICTUREBUTTON DC_TEXTCOLOR=13 ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX REPORTVIEW DC_ITEMBOXADD=14 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW DC_ITEMBOXREMOVE=15 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW DC_RADIOVALUE=16 ; RADIOBUTTON DC_POSITION=17 ; ALL CONTROLS (Except MENUBAR and MENUITEM) DC_MENUNAMES=18 ; ALL CONTROLS DC_HANDLE=19 ; ALL CONTROLS (Except MENUBAR and MENUITEM) DC_RVCOLHEAD=20 ; REPORTVIEW DC_RVCOLWIDTH=21 ; REPORTVIEW DC_RVADDCOL=22 ; REPORTVIEW DC_RVREMOVECOL=23 ; REPORTVIEW DC_RVMATCHCOL=24 ; REPORTVIEW DC_RVCANCELEDIT=25 ; REPORTVIEW DC_RVCHECKEDROWS=26 ; REPORTVIEW DC_RVJUSTIFY=27 ; REPORTVIEW ;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 ;============================================================ ;============================================================ ;============================================================ #DefineSubRoutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,MyDialog_ChangeInfo) InitDialogConstants() ; Initialize Dialog Constants ON_EQUAL = @TRUE ; Initialize variable ON_EQUAL Switch MyDialog_Message ; Switch based on Dialog Message type Case MSG_INIT ; Standard Initialization message DialogProcOptions(MyDialog_Handle,MSG_TIMER,100) DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE) ICC_PROGRESS_CLASS = 32 InitCommonControls(ICC_PROGRESS_CLASS) ; Control Coordinates startx = 10 starty = 10 width = 400 height = 50 TBHandle1 = TrackBarCreate(0,MyDialog_Handle,startx,starty,width,height) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Set Range Positons of TrackBar32 control ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Set range from 0-100 WM_USER = 1024 TBM_SETRANGE = WM_USER+6 ; Set Range of TrackBar32 control DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETRANGE,long:0,long:100) ; Set range from 50-100 ;TBM_SETRANGEMIN = WM_USER+7 ; Sets the minimum range position for the slider in a trackbar. ;TBM_SETRANGEMAX = WM_USER+8 ; Sets the maximum range position for the slider in a trackbar. ;redraw = @TRUE ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETRANGEMIN,long:redraw,long:50) ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETRANGEMAX,long:redraw,long:100) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Set the start oositon of TrackBar32 control ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;TBM_SETPOS = WM_USER+5 ;redraw = @TRUE ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETPOS,long:redraw,long:50) Return(RET_DO_NOT_EXIT) Case MSG_TIMER TBM_GETPOS = 1024 ; Get Positon of TrackBar32 control POSITION = DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_GETPOS,long:0,long:0) DialogControlSet( MyDialog_Handle, "VaryText_1", DC_TITLE, POSITION ) Return(RET_DO_NOT_EXIT) Case MSG_BUTTONPUSHED If MyDialog_Name == "PushButton_OK" ; OK ; Get Positon of TrackBar32 control TBM_GETPOS = 1024; Gets the current logical position of the slider. POSITION = DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_GETPOS,long:0,long:0) Return(RET_DO_DEFAULT) ElseIf MyDialog_Name == "PushButton_Cancel" ; Cancel Return(RET_DO_DEFAULT) EndIf ; MyDialog_Name Return(RET_DO_CANCEL) EndSwitch ; MyDialog_Message Return(RET_DO_DEFAULT) #EndSubRoutine ; End of Dialog Callback MyDialogCallbackProc ;============================================================ ;============================================================ ;============================================================ Return
Article ID: W17767
Filename: Track Bar Sample.txt
File Created: 2014:05:06:11:03:12
Last Updated: 2014:05:06:11:03:12