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

Samples

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

Multiline Button Text


Multiline Button Control Example:


#DefineFunction CBox2MLButton(hDialog, nControl)
; Developer: IFICANTBYTE
; CBox2MLButton - Give a Checkbox in a WinBatch Dialog the correct style to display itself as a button with multiple lines of text
; Don't use this on other types of controls or you will encounter strange results!

; hDialog  - window handle to WIL dialog
; nControl - template position number of dialog control

BS_MULTILINE = 8192
BS_CHECKBOX = 2
;Some other ButtonStyles you could logically OR to align the text on the button
BS_BOTTOM = 2048
BS_CENTER = 768
BS_LEFT = 256
BS_RIGHT = 512
BS_TOP = 1024
BS_VCENTER = 3072
;BS_RADIOBUTTON = 4 - just for reference - you could probably adapt this UDF to do the same with radio buttons
   hUser32 = DllLoad(DirWindows(1):"User32.dll")
   hControl = DllCall(hUser32, long:"GetDlgItem", long:hDialog, long:nControl+99)
   CtrlStyle = DllCall(hUser32, long:"GetWindowLongA", long:hControl, long:-16)
   DllCall(hUser32, long:"SetWindowLongA", long:hControl, long:-16, long:(CtrlStyle^BS_CHECKBOX)|BS_MULTILINE); take away checkbox style and add multiline
   DllFree(hUser32)
#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

   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

   ;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 MENUITEM
   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
   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)


   ;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 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,1000)
         CBox2MLButton(MyDialog_Handle, 4) ; Change Checkbox (control ID 004) to a Button with multiline style
         CBox2MLButton(MyDialog_Handle, 5) ; Change Checkbox (control ID 005) to a Button with multiline style
         CBox2MLButton(MyDialog_Handle, 6) ; Change Checkbox (control ID 006) to a Button with multiline style
         DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
         DialogProcOptions(MyDialog_Handle,MSG_CHECKBOX,@TRUE)
         Return(RET_DO_DEFAULT)

     Case MSG_BUTTONPUSHED
        If MyDialog_Name == "PushButton_OK"                ; OK
              Return(RET_DO_DEFAULT)

        ElseIf MyDialog_Name == "PushButton_Cancel"        ; Cancel
              Return(RET_DO_DEFAULT)

        EndIf                                              ; MyDialog_Name
        Return(RET_DO_DEFAULT)

     Case MSG_CHECKBOX
        If MyDialog_Name == "CheckBox_1"                   ; MyVariable1 A Normal Checkbox control - to show they still work as they should
            Message("Normal Checkboxes work just the way they always did","You clicked the normal Checkbox")
            Return(RET_DO_DEFAULT)

        ElseIf MyDialog_Name == "CheckBox_2"               ; MyVariable2 This was actually a Checkbox just like the normal one above but converted to a MULTILINE button style. This new 'button' will automatically wrap long text onto the next line. The dialog's callback procedure still thinks it's a Checkbox though and captures its click events as such.
            Message("Converted Checkboxes still have their click event seen as coming from a Checkbox, not a Button","You clicked the first converted Checkbox that looks like a button - this event is still processed as a click to a checkbox by the dialog procedure, however there are no checked and unchecked states.")
            Return(RET_DO_DEFAULT)

        ElseIf MyDialog_Name == "CheckBox_3"               ; MyVariable3 Same as above except square
            Message("The title can be read in the normal way",DialogControlGet( MyDialog_Handle, MyDialog_Name, DC_TITLE ) ); Returns text and state information associated with a control.
            Return(RET_DO_DEFAULT)

        ElseIf MyDialog_Name == "CheckBox_4"               ; MyVariable4
            Message("Checkboxes by default don't close Dialogs but Buttons do - so force it if you want it","You need to force the Return action of a click to 'RET_DO_CANCEL' (Zero) in order to close the Dialog if you want to mimic the Default action of a real Button - that's what this one has,... so bye for now!")
            Return(RET_DO_CANCEL)

        EndIf                                              ; MyDialog_Name
        Return(RET_DO_DEFAULT)

   EndSwitch                                                ; MyDialog_Message
   Return(RET_DO_DEFAULT)
#EndFunction                                                ; End of Dialog Callback MyDialogCallbackProc

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






;There is something about 'real' WinBatch buttons that wont accept the multiline style, so that's why I picked on the Checkbox - they are closely related and seem to accept the style change just fine.
MyDialogFormat=`WWWDLGED,6.2`

MyDialogCaption=`Multiline Button Control Example`
MyDialogX=685
MyDialogY=136
MyDialogWidth=194
MyDialogHeight=240
MyDialogNumControls=007
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`011,185,036,012,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",1,1,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`143,185,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`007,005,176,012,CHECKBOX,"CheckBox_1",MyVariable1,"A Normal Checkbox control - to show they still work as they should",1,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog004=`007,021,176,038,CHECKBOX,"CheckBox_2",MyVariable2,"This was actually a Checkbox just like the normal one above but converted to a MULTILINE button style. This new 'button' will automatically wrap long text onto the next line. The dialog's callback procedure still thinks it's a Checkbox though and captures its click events as such.",1,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog005=`007,067,044,044,CHECKBOX,"CheckBox_3",MyVariable3,"Same as above except square",1,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog006=`059,067,124,110,CHECKBOX,"CheckBox_4",MyVariable4,"Same again but with a custom font - unfortunately colors don't work :-(`:@LF:`Note that you can also force linefeeds`:@LF:`This one also exits the Dialog.",1,6,DEFAULT,"Times New Roman|7680|70|18","0|128|0","128|128|255"`
MyDialog007=`005,201,182,032,STATICTEXT,"StaticText_1",DEFAULT,"There is something about 'real' WinBatch buttons that wont accept the multiline style, so that's why I picked on the Checkbox - they are closely related (as are radio buttons) and seem to accept the style change just fine.",DEFAULT,7,512,"Microsoft Sans Serif|5632|70|34","0|0|0","128|128|255"`

ButtonPushed=Dialog("MyDialog")
exit


Example - Older 6.1 Dialog

;UDF/UDS START               ===================================================================================================               . . . . I F I C /-) /\/ ¯/¯ B Y T E
; CBox2MLButton - Give a Checkbox in a WinBatch Dialog the correct style to display itself as a button with multiple lines of text
; Don't use this on other types of controls or you will encounter strange results!

; hDialog  - window handle to WIL dialog
; nControl - template position number of dialog control

#DefineFunction CBox2MLButton(hDialog, nControl)
BS_MULTILINE = 8192
BS_CHECKBOX = 2
;Some other ButtonStyles you could logically OR to align the text on the button
BS_BOTTOM = 2048
BS_CENTER = 768
BS_LEFT = 256
BS_RIGHT = 512
BS_TOP = 1024
BS_VCENTER = 3072
;BS_RADIOBUTTON = 4 - just for reference - you could probably adapt this UDF to do the same with radio buttons
   hUser32 = DllLoad(DirWindows(1):"User32.dll")
   hControl = DllCall(hUser32, long:"GetDlgItem", long:hDialog, long:nControl+99)
   CtrlStyle = DllCall(hUser32, long:"GetWindowLongA", long:hControl, long:-16)
   DllCall(hUser32, long:"SetWindowLongA", long:hControl, long:-16, long:(CtrlStyle^BS_CHECKBOX)|BS_MULTILINE); take away checkbox style and add multiline
   DllFree(hUser32)
#EndFunction
;UDF/UDS END               ===================================================================================================               . . . . I F I C /-) /\/ ¯/¯ B Y T E



#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)

   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
   DCSTATE_MOVEMOUSEOVER=6   ; Move the mouse over the control

   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
   DC_RADIOVALUE=16          ; RADIOBUTTON


   ;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 MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_ID,MyDialog_EventInfo,rsvd)
   InitDialogConstants()                                    ; Initialize Dialog Constants
   Switch MyDialog_Message                                  ; Switch based on Dialog Message type
      Case MSG_INIT                                         ; Standard Initialization message

      CBox2MLButton(MyDialog_Handle, 4) ; Change Checkbox (control ID 004) to a Button with multiline style
      CBox2MLButton(MyDialog_Handle, 5) ; Change Checkbox (control ID 005) to a Button with multiline style
      CBox2MLButton(MyDialog_Handle, 6) ; Change Checkbox (control ID 006) to a Button with multiline style

;         DialogProcOptions(MyDialog_Handle,MSG_TIMER,1000)
;         DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
         DialogProcOptions(MyDialog_Handle,MSG_CHECKBOX,@TRUE)
         Return(RET_DO_DEFAULT)

;     case MSG_BUTTONPUSHED
;        switch MyDialog_ID
;           case 001                                        ; ID 001  OK
;              return(RET_DO_DEFAULT)

;           case 002                                        ; ID 002  Cancel
;              return(RET_DO_DEFAULT)

;        endswitch                                          ; MyDialog_ID
;        return(RET_DO_DEFAULT)

     Case MSG_CHECKBOX
        Switch MyDialog_ID
           Case 003                                        ; ID 003  MyVariable1 A Normal Checkbox control - to show they still work as they should
           Message("Normal Checkboxes work just the way they always did","You clicked the normal Checkbox")
              Return(RET_DO_DEFAULT)

           Case 004                                        ; ID 004  MyVariable2 A Checkbox just like the normal one above but converted to a multiline button style. This new button will automatically wrap long text onto the next line.
           Message("Converted Checkboxes still have their click event seen as coming from a Checkbox, not a Button","You clicked the first converted Checkbox that looks like a button - this event is still processed as a click to a checkbox by the dialog procedure, however there are no checked and unchecked states.")
              Return(RET_DO_DEFAULT)

           Case 005                                        ; ID 005  MyVariable3 Same as above, just square and showing color and font stuff still works
           Message("The title can be read in the normal way",DialogControlGet(MyDialog_Handle, 5, 4 ))         ; Returns text and state information associated with a control.
              Return(RET_DO_DEFAULT)

           Case 006                                        ; ID 006  MyVariable4 Check 4
           Message("Checkboxes by default don't close Dialogs but Buttons do - so force it if you want it","You need to force the Return action of a click to 'RET_DO_CANCEL' (Zero) in order to close the Dialog if you want to mimic the Default action of a real Button - that's what this one has,... so bye for now!")
              Return(RET_DO_CANCEL)

        EndSwitch                                          ; MyDialog_ID
        Return(RET_DO_DEFAULT)

   EndSwitch                                                ; MyDialog_Message
   Return(RET_DO_DEFAULT)
#EndFunction                                                ; End of Dialog Callback MyDialogCallbackProc

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


;There is something about 'real' WinBatch buttons that wont accept the multiline style, so that's why I picked on the Checkbox - they are closely related and seem to accept the style change just fine.

MyDialogFormat=`WWWDLGED,6.1`

MyDialogCaption=`....IFICantBYTE's Multiline Button Control Example`
MyDialogX=685
MyDialogY=136
MyDialogWidth=194
MyDialogHeight=240
MyDialogNumControls=007
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`011,185,036,012,PUSHBUTTON,DEFAULT,"OK",1,1,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`143,185,036,012,PUSHBUTTON,DEFAULT,"Cancel",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`007,005,176,012,CHECKBOX,MyVariable1,"A Normal Checkbox control - to show they still work as they should",1,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog004=`007,021,176,038,CHECKBOX,MyVariable2,"This was actually a Checkbox just like the normal one above but converted to a MULTILINE button style. This new 'button' will automatically wrap long text onto the next line. The dialog's callback procedure still thinks it's a Checkbox though and captures its click events as such.",1,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog005=`007,067,044,044,CHECKBOX,MyVariable3,"Same as above except square",1,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog006=`059,067,124,110,CHECKBOX,MyVariable4,"Same again but with a custom font - unfortunately colors don't work :-(%@LF%%@LF%Note%@LF%that%@LF%you%@LF%can%@LF%also%@LF%force%@LF%linefeeds!%@LF%%@LF%This one also exits the Dialog.",1,6,DEFAULT,Times New Roman|7680|70|18,"0|128|0","128|128|255"`
MyDialog007=`005,201,182,032,STATICTEXT,DEFAULT,"There is something about 'real' WinBatch buttons that wont accept the multiline style, so that's why I picked on the Checkbox - they are closely related (as are radio buttons) and seem to accept the style change just fine.",DEFAULT,7,512,"Microsoft Sans Serif|5632|70|34","0|0|0","128|128|255"`

ButtonPushed=Dialog("MyDialog")

Article ID:   W17783
Filename:   MultilineButtonText.txt
File Created: 2011:05:11:13:33:36
Last Updated: 2011:05:11:13:33:36