Winbatch Dialog - Slider

Started by galaara98, April 25, 2014, 12:57:12 PM

Previous topic - Next topic

galaara98

totally just to obtain a certain look, but i have a dialog that could benefit from a slider instead of a spinner to represent %
  (graphical representation of 1 to 100 instead of a numerical)

anyone know of a way (preferably easy :) ) to pull this off

Aaron

Deana

Here is a UNDEBUGGED code sample that dynamically draws a slider control using DLlCalls and returns the user selected value:
Code  winbatch Select
;*************************************************************************** ;**   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.04.24 ;*************************************************************************** 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:"DateTime",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)          TBM_SETRANGE = 61584 ;0xF090          TBM_SETMIN = 61597;   0xF09D Sets the minimum logical position for the slider in a trackbar.          TBM_SETMAX  = 61598; 0xF09E Sets the maximum logical position for the slider in a trackbar.           ; Set Range Positons of TrackBar32 control          ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETMIN,long:0,long:0)          ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETMAX,long:100,long:0)          DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETRANGE,long:0,long:100)                      return(RET_DO_NOT_EXIT)      case MSG_TIMER                                                  ; Get Positon of TrackBar32 control           TBM_GETPOS = 1024;   0xF093 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)           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;   0xF093 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

Deana F.
Technical Support
Wilson WindowWare Inc.

galaara98

Thanks, works like a charm.. I was able to create 2 of them and use them for my purpose... THANKS so much for your effort!

galaara98

Quote from: Deana on April 25, 2014, 03:17:49 PM
Here is a UNDEBUGGED code sample that dynamically draws a slider control using DLlCalls and returns the user selected value:
Code  winbatch Select
;*************************************************************************** ;**   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.04.24 ;*************************************************************************** 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:"DateTime",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)          TBM_SETRANGE = 61584 ;0xF090          TBM_SETMIN = 61597;   0xF09D Sets the minimum logical position for the slider in a trackbar.          TBM_SETMAX  = 61598; 0xF09E Sets the maximum logical position for the slider in a trackbar.           ; Set Range Positons of TrackBar32 control          ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETMIN,long:0,long:0)          ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETMAX,long:100,long:0)          DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETRANGE,long:0,long:100)                      return(RET_DO_NOT_EXIT)      case MSG_TIMER                                                  ; Get Positon of TrackBar32 control           TBM_GETPOS = 1024;   0xF093 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)           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;   0xF093 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


Ok I have some trouble... I have 2 cosmetics I am trying to achieve and I can't seem to tweak the control to achieve my wishes.

1) fairly important -  I would like to set the slider to start at a specific point when the dialog initializes.
        I tried adding to the CASE_INIT
        .
        .
        .
   TBHandle_PS = TrackBarCreate(0,MyDialog_Handle,10,305,width,height)
         TBM_SETRANGE = 61584 ;0xF090
         TBM_SETMIN = 61597;   0xF09D Sets the minimum logical position for the slider in a trackbar.
         TBM_SETMAX  = 61598; 0xF09E Sets the maximum logical position for the slider in a trackbar.
         TBM_SETPOS = 61586;   0xF092 Sets the current logical position of the slider. ;http://www.minigui.org/api_ref/3.0.12_standalone/group__ctrl__trackbar__msgs.html
          STARTPOS = 100
          ; Set Range Positons of TrackBar32 control
         ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_MP,long:TBM_SETMIN,long:50,long:50)
         ;DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETMAX,long:100,long:0)
         DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_MP,long:TBM_SETRANGE,long:0,long:100)
         DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_PS,long:TBM_SETRANGE,long:0,long:100)
         
         ;attempt to set "starting"/current position of trackbar
         DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_PS,long:TBM_SETPOS,long:STARTPOS,long:STARTPOS)
         DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_PS,long:TBM_SETPOS,long:0,long:STARTPOS)
         DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_PS,long:TBM_SETPOS,long:STARTPOS,long:0)

none of the calls worked
(also I am confused how you determined TPM_GETPOS = 1024 when the documentation seems to indicate it would be 0xF093 [61587]
so I also tried TPM_SETPOS = 1023; on a whim... also did not work)


2) cosmetic (I can achieve in the data instead of the control if needed) - I would like to set the control to go from 50 - 100 (or in another circumstance 0 - 50)


====
;note: I added functionality to the case MSG_TIMER that check for if the value has changed
;     code wise this is less efficient, but without it sometimes the VariableText Control blinks

     case MSG_INIT
         .
         .
         .
         LastPercentSame = 0
         .
         .
         break
     case MSG_TIMER
          TBM_GETPOS = 1024;   0xF093 Gets the current logical position of the slider. 
          PercentSame = DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_PS,long:TBM_GETPOS,long:0,long:0)
          if PercentSame != LastPercentSame then
               LastPercentSame = PercentSame
               DialogControlSet( MyDialog_Handle, "PerSame", DC_TITLE, PercentSame )
          end if
          return(RET_DO_NOT_EXIT)

Deana

Value of TBM_GETPOS &  TBM_GETPOS is from the header file commctrl.h
WMUSER is 1024: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644931(v=vs.85).aspx
Therefore  TBM_GETPOS = 1024 and  TBM_SETPOS = 1024 + 5.
#define TBM_GETPOS (WM_USER)
#define TBM_GETRANGEMIN (WM_USER+1)
#define TBM_GETRANGEMAX (WM_USER+2)
#define TBM_GETTIC (WM_USER+3)
#define TBM_SETTIC (WM_USER+4)
#define TBM_SETPOS (WM_USER+5)
#define TBM_SETRANGE (WM_USER+6)
#define TBM_SETRANGEMIN (WM_USER+7)
#define TBM_SETRANGEMAX (WM_USER+8)
#define TBM_CLEARTICS (WM_USER+9)
#define TBM_SETSEL (WM_USER+10)
#define TBM_SETSELSTART (WM_USER+11)
#define TBM_SETSELEND (WM_USER+12)
#define TBM_GETPTICS (WM_USER+14)
#define TBM_GETTICPOS (WM_USER+15)
#define TBM_GETNUMTICS (WM_USER+16)
#define TBM_GETSELSTART (WM_USER+17)
#define TBM_GETSELEND (WM_USER+18)
#define TBM_CLEARSEL (WM_USER+19)
#define TBM_SETTICFREQ (WM_USER+20)
#define TBM_SETPAGESIZE (WM_USER+21)
#define TBM_GETPAGESIZE (WM_USER+22)
#define TBM_SETLINESIZE (WM_USER+23)
#define TBM_GETLINESIZE (WM_USER+24)
#define TBM_GETTHUMBRECT (WM_USER+25)
#define TBM_GETCHANNELRECT (WM_USER+26)
#define TBM_SETTHUMBLENGTH (WM_USER+27)
#define TBM_GETTHUMBLENGTH (WM_USER+28)
#define TBM_SETTOOLTIPS (WM_USER+29)
#define TBM_GETTOOLTIPS (WM_USER+30)
#define TBM_SETTIPSIDE (WM_USER+31)
#define TBM_SETBUDDY (WM_USER+32)
#define TBM_GETBUDDY (WM_USER+33)
#define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
#define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT


The TBM_SETPOS message expects two parameters. the first is a redraw flag and the second is the position. http://msdn.microsoft.com/en-us/library/windows/desktop/bb760219(v=vs.85).aspx, to the code to set the start position to 50 should read:

Code  winbatch Select
; Add to CASE_INIT after creating the control. TBM_SETPOS = 1024 + 5 redraw = @TRUE DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle1,long:TBM_SETPOS,long:redraw,long:50)


You can set the range of your trackbar using this code:

Code  winbatch Select
; Set Range from 50 - 100 ; Set Range Positions of TrackBar32 control WM_USER = 1024 TBM_SETRANGEMIN = WM_USER+7 TBM_SETRANGEMAX = WM_USER+8 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)
Deana F.
Technical Support
Wilson WindowWare Inc.

galaara98

OK found the first one.

TrackBar Message CONSTANTS can be found here (as defined by Linux WINEs reverse engineering of commctrl.h)
http://source.winehq.org/source/include/commctrl.h [LINE NUMBERS INDICATED IN QUOTE BELOW]

indicate the following values (Where WM_USER = 0x400 as defined by http://msdn.microsoft.com/en-us/library/windows/desktop/ms644931(v=vs.85).aspx)

CONTANT                                                                      WM_USER      +      VALUE
2096 #define TBM_GETPOS              (WM_USER)                      1024      0      1024
2097 #define TBM_GETRANGEMIN         (WM_USER+1)      1024      1      1025
2098 #define TBM_GETRANGEMAX         (WM_USER+2)      1024      2      1026
2099 #define TBM_GETTIC              (WM_USER+3)         1024      3      1027
2100 #define TBM_SETTIC              (WM_USER+4)         1024      4      1028
2101 #define TBM_SETPOS              (WM_USER+5)         1024      5      1029
2102 #define TBM_SETRANGE            (WM_USER+6)         1024      6      1030
2103 #define TBM_SETRANGEMIN         (WM_USER+7)      1024      7      1031
2104 #define TBM_SETRANGEMAX         (WM_USER+8)      1024      8      1032
2105 #define TBM_CLEARTICS           (WM_USER+9)         1024      9      1033
2106 #define TBM_SETSEL              (WM_USER+10)         1024      10      1034
2107 #define TBM_SETSELSTART         (WM_USER+11)      1024      11      1035
2108 #define TBM_SETSELEND           (WM_USER+12)         1024      12      1036
2109 #define TBM_GETPTICS            (WM_USER+14)         1024      14      1038
2110 #define TBM_GETTICPOS           (WM_USER+15)         1024      15      1039
2111 #define TBM_GETNUMTICS          (WM_USER+16)      1024      16      1040
2112 #define TBM_GETSELSTART         (WM_USER+17)      1024      17      1041
2113 #define TBM_GETSELEND           (WM_USER+18)         1024      18      1042
2114 #define TBM_CLEARSEL            (WM_USER+19)         1024      19      1043
2115 #define TBM_SETTICFREQ          (WM_USER+20)         1024      20      1044
2116 #define TBM_SETPAGESIZE         (WM_USER+21)      1024      21      1045
2117 #define TBM_GETPAGESIZE         (WM_USER+22)      1024      22      1046
2118 #define TBM_SETLINESIZE         (WM_USER+23)         1024      23      1047
2119 #define TBM_GETLINESIZE         (WM_USER+24)         1024      24      1048
2120 #define TBM_GETTHUMBRECT        (WM_USER+25)      1024      25      1049
2121 #define TBM_GETCHANNELRECT      (WM_USER+26)      1024      26      1050
2122 #define TBM_SETTHUMBLENGTH      (WM_USER+27)      1024      27      1051
2123 #define TBM_GETTHUMBLENGTH      (WM_USER+28)      1024      28      1052
2124 #define TBM_SETTOOLTIPS         (WM_USER+29)      1024      29      1053
2125 #define TBM_GETTOOLTIPS         (WM_USER+30)      1024      30      1054
2126 #define TBM_SETTIPSIDE          (WM_USER+31)         1024      31      1055
2127 #define TBM_SETBUDDY            (WM_USER+32)         1024      32      1056
2128 #define TBM_GETBUDDY            (WM_USER+33)         1024      33      1057

Microsoft documents the TBM_SETPOS call here (http://msdn.microsoft.com/en-us/library/windows/desktop/bb760219(v=vs.85).aspx) where it indicated there are 2 arguments
            LONG:TRUE(1) or FALSE(0) whether to update now
                 (regardless of whether you update now, the trackbar value is changed, but without the update the user doesn't see the "slider" move)
            LONG:POSITION

So I was able to update the position of my slider like so
.
.
.
TBM_SETPOS = 1029
STARTPOS = 43

TBHandle_PS = TrackBarCreate(0,"TBHandle_PS",MyDialog_Handle,10,305,width,height)
DllCall(DirWindows(1):"user32.dll",long:"SendMessageA",long:TBHandle_PS,long:TBM_SETPOS,long:@TRUE,long:STARTPOS)


galaara98

hahaha.. I posted about same time.. again thanks for all your efforts


JTaylor

Not sure if you are interested but I added the TrackBar control to the CommControl Extender.  Posted it under the Script Exchange forum.
Jim

galaara98

Quote from: JTaylor on May 07, 2014, 02:08:11 PM
Not sure if you are interested but I added the TrackBar control to the CommControl Extender.  Posted it under the Script Exchange forum.
Jim

I finally got looking into this.. great job. 
Can you compile it 64 bit for me?

Aaron