On the off-chance someone finds this useful...hopefully I've covered all the bases. Didn't test every single possibility so let me know if you find a problem.
Jim
#DefineSubRoutine DC_Compatible(dvar,cnum,const,dfunc)
;###########################################################
;dvar = Dialog Variable
;cnum = Control Number
;const = Dialog Constant. List can be obtained from the right-click menu in WinBatch Studio under Code-Blocks.
;dfunc = "style" or "set" or "get".
;Leave no spaces in your lists
;Example:
; IsCompat = DC_Compatible("COMPAT_TEST",DialogProcOptions(Dlg_Handle,dpo_getnumber,DCID),dcstyle_invisible,"style")
;###########################################################
Init_Dialog_Constants()
If !IsDefined(style_list_1) Then GoSub Init_Lists
cnum = StrFixLeft(cnum,"0",3)
ctype = ItemExtract(5,%dvar%%cnum%,",")
IsCompat = 0
If StrLower(dfunc) == "style" Then
If const == DCSTYLE_INVISIBLE Then Return 1
If ItemLocate(ctype,style_list_%const%,",") > 0 Then Return 1
EndIf
If StrLower(dfunc) == "get" || StrLower(dfunc) == "set" Then
If const == DC_POSITION && (ctype == "MENUBAR" || ctype == "MENUITEM") Then Return 0
If const == DC_POSITION Then Return 1
If const == DC_RADIOCONTROL && StrLower(dfunc) == "set" Then Return 0
If const == DC_MULTITABSTOPS && StrLower(dfunc) == "get" Then Return 0
If ItemLocate(ctype,setget_list_%const%,",") > 0 Then Return 1
EndIf
Return 0
:INIT_LISTS
style_list_1 = "All"
style_list_2 = "PUSHBUTTON,RADIOBUTTON,CHECKBOX,PICTUREBUTTON,EDITBOX,MULTILINEBOX,ITEMBOX,FILELISTBOX,CALENDAR,DROPLISTBOX,REPORTVIEW,SPINNER,GROUPBOX,VARYTEXT,STATICTEXT,MENUITEM"
style_list_4 = ""
style_list_8 = "EDITBOX,MULTILINEBOX,SPINNER"
style_list_16 = "EDITBOX"
style_list_32 = "PUSHBUTTON,PICTUREBUTTON"
style_list_64 = "EDITBOX,MULTILINEBOX"
style_list_128 = "PUSHBUTTON,PICTUREBUTTON"
style_list_256 = ""
style_list_512 = "VARYTEXT,STATICTEXT"
style_list_1024 = "VARYTEXT,STATICTEXT"
style_list_2048 = "EDITBOX,MULTILINEBOX"
style_list_4096 = "EDITBOX,MULTILINEBOX"
style_list_8192 = "PUSHBUTTON,PICTUREBUTTON"
style_list_32768 = "MENUITEM"
style_list_65536 = "MENUITEM"
style_list_131072 = "MENUITEM"
style_list_262144 = "MENUITEM"
style_list_524288 = "REPORTVIEW"
style_list_1048576 = "REPORTVIEW"
style_list_2097152 = "REPORTVIEW"
style_list_4194304 = "REPORTVIEW"
style_list_8388608 = "REPORTVIEW"
style_list_16777216 = "REPORTVIEW"
style_list_33554432 = "REPORTVIEW"
style_list_67108864 = "REPORTVIEW"
style_list_134217728 = "REPORTVIEW"
setget_list_1 = "CHECKBOX,REPORTVIEW"
setget_list_2 = "RADIOBUTTON"
setget_list_3 = "EDITBOX"
setget_list_4 = "PICTURE,RADIOBUTTON,CHECKBOX,PICTUREBUTTON,VARYTEXT,STATICTEXT,GROUPBOX,PUSHBUTTON,MENUITEM"
setget_list_5 = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
setget_list_6 = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
setget_list_7 = "CALENDAR"
setget_list_8 = "SPINNER"
setget_list_9 = "MULTILINEBOX"
setget_list_10 = "ITEMBOX,FILELISTBOX,MULTILINEBOX,REPORTVIEW"
setget_list_11 = "RADIOBUTTON,CHECKBOX,VARYTEXT,STATICTEXT,GROUPBOX,PUSHBUTTON,ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW,SPINNER,EDITBOX,MULTILINEBOX"
setget_list_12 = "PICTURE,PICTUREBUTTON"
setget_list_13 = "RADIOBUTTON,CHECKBOX,VARYTEXT,STATICTEXT,GROUPBOX,PUSHBUTTON,ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW,SPINNER,EDITBOX,MULTILINEBOX"
setget_list_14 = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
setget_list_15 = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
setget_list_16 = "RADIOBUTTON" ; Valid for DialogControlGet only.
setget_list_17 = "ALL CONTROLS" ; (Except MENUBAR and MENUITEM)"
setget_list_20 = "REPORTVIEW"
setget_list_21 = "REPORTVIEW"
setget_list_22 = "REPORTVIEW"
setget_list_23 = "REPORTVIEW"
setget_list_25 = "REPORTVIEW"
setget_list_27 = "REPORTVIEW"
Return
#EndSubRoutine
#DefineSubRoutine Init_Dialog_Constants()
MSG_INIT = 0 ; The one-time initilization
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 ; Get double-click message on an ItemBox
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 item text
MSG_RVHEADER = 22 ; Reportview header clicked
DPO_DISABLESTATE = 1000 ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
DPO_CHANGEBACKGROUND = 1001 ; -1=GetSetting 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 ; -1=Get Current otherise new title
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 the number associated with a control's name.
;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 a 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_HEIGHT = 256 ; Turns off automatic height adjustment on ItemBoxes and FileListBoxes
DCSTYLE_CENTER = 512 ; Center Text in VARYTEXT and STATICTEXT Controls
DCSTYLE_RIGHT = 1024 ; Right Justify Text in VARYTEXT and STATICTEXT Controls
DCSTYLE_NOSELCURLEFT = 2048 ; No selection, cursor left EDITBOX MULTILINEBOX
DCSTYLE_NOSELCURRIGHT = 4096 ; No selection, cursor right 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 ; Causes a separator bar graphic to display instead of text at the menu item's location in the menu MENUITEM
DCSTYLE_MENUBREAK = 262144 ; Cause a column break to occur at the specific item when used with drop-down, context, or submenus. Causes a line break (new row) with menu items hosted directly by the MENUBAR MENUITEM
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
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_RADIOCONTROL = 16 ; RADIOBUTTON
DC_POSITION = 17 ; RADIOBUTTON
DC_MENUNAMES = 18 ; ALL CONTROLS
DC_HANDLE = 19 ; ALL CONTROLS (Except MENUBAR and MENUITEM)
DC_RVCOLHEAD = 20 ; REPORTVIEW
DC_RVCOLWIDTH = 21 ; REPORTVIEW
DC_RVCOLMATCH = 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_REMOVEEVENT = 2 ; Stop calling dialog callback when an event previously requested with
DLGOBJECT_GETOBJECT = 3 ; Return an object references to the specified control
DLGOBJECT_GETPICOBJECT = 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
#EndSubRoutine