' Show which codes are used'

' button (08)
' chekbx (06)
' combob (11)
' edit   (16)
' listbx (13)
' listvw (22)
' radiob (05)
' riched (15)
' static (03)
' treevw (19)
' window (19)

DEF codeb[150],codec[150],text,text1,text2:STRING
DEF coden[150]:UINT64
DEF i,l,max,imax=149:INT
DEF d:DOUBLE
DEF u,t:UINT64

'Program Files (x86)\IWBDev3\bin\iwbstd.incc
DATABEGIN specials
	DATA "BUTTON","@CTLBTNBITMAP",0x80
	DATA "BUTTON","@CTLBTNDEFAULT",0x1
	DATA "BUTTON","@CTLBTNFLAT",0x8000
	DATA "BUTTON","@CTLBTNMULTI",0x2000
	DATA "BUTTON","@DISABLE",0x8000000
	DATA "BUTTON","@GROUP",0x20000
	DATA "BUTTON","@SYSMENU",0x80000
	DATA "BUTTON","@TABSTOP",0x10000
	DATA "CHEKBX","@CTLBTNMULTI",0x2000
	DATA "CHEKBX","@DISABLE",0x8000000
	DATA "CHEKBX","@GROUP",0x20000
	DATA "CHEKBX","@LEFTTEXT",0x20
	DATA "CHEKBX","@SYSMENU",0x80000
	DATA "CHEKBX","@TABSTOP",0x10000
	DATA "COMBOB","@CTCOMBOAUTOHSCROLL",0x40
	DATA "COMBOB","@CTCOMBODROPDOWN",0x2
	DATA "COMBOB","@CTCOMBODROPLIST",0x3
	DATA "COMBOB","@CTCOMBOSIMPLE",0x1
	DATA "COMBOB","@CTCOMBOSORT",0x100
	DATA "COMBOB","@DISABLE",0x8000000
	DATA "COMBOB","@GROUP",0x20000
	DATA "COMBOB","@HSCROLL",0x100000
	DATA "COMBOB","@SYSMENU",0x80000
	DATA "COMBOB","@TABSTOP",0x10000
	DATA "COMBOB","@VSCROLL",0x200000
	DATA "EDIT","@CTEDITAUTOH",0x80
	DATA "EDIT","@CTEDITAUTOV",0x40
	DATA "EDIT","@CTEDITCENTER",0x1
	DATA "EDIT","@CTEDITLEFT",0x0
	DATA "EDIT","@CTEDITMULTI",0x4
	DATA "EDIT","@CTEDITNUMBER",0x2000
	DATA "EDIT","@CTEDITPASS",0x20
	DATA "EDIT","@CTEDITRETURN",0x1000
	DATA "EDIT","@CTEDITRIGHT",0x2
	DATA "EDIT","@CTEDITRO",0x800
	DATA "EDIT","@DISABLE",0x8000000
	DATA "EDIT","@ES_LOWERCASE",0x10
	DATA "EDIT","@ES_UPPERCASE",0x8
	DATA "EDIT","@GROUP",0x20000
	DATA "EDIT","@HSCROLL",0x100000
	DATA "EDIT","@SYSMENU",0x80000
	DATA "EDIT","@TABSTOP",0x10000
	DATA "EDIT","@VSCROLL",0x200000
	DATA "LISTBX","@CTLISTCOLUMNS",0x200
	DATA "LISTBX","@CTLISTEXTENDED",0x800
	DATA "LISTBX","@CTLISTMULTI",0x8
	DATA "LISTBX","@CTLISTNOTIFY",0x1
	DATA "LISTBX","@CTLISTSORT",0x2
	DATA "LISTBX","@CTLISTSTANDARD",0xA00003
	DATA "LISTBX","@CTLISTTABS",0x80
	DATA "LISTBX","@DISABLE",0x8000000
	DATA "LISTBX","@GROUP",0x20000
	DATA "LISTBX","@HSCROLL",0x100000
	DATA "LISTBX","@SYSMENU",0x80000
	DATA "LISTBX","@TABSTOP",0x10000
	DATA "LISTBX","@VSCROLL",0x200000
	DATA "LISTVW","@DISABLE",0x8000000
	DATA "LISTVW","@GROUP",0x20000
	DATA "LISTVW","@HSCROLL",0x100000
	DATA "LISTVW","@LVSALIGNLEFT",0x800
	DATA "LISTVW","@LVSALIGNTOP",0x0
	DATA "LISTVW","@LVSAUTOARRANGE",0x100
	DATA "LISTVW","@LVSEDITLABELS",0x200
	DATA "LISTVW","@LVSICON",0x0
	DATA "LISTVW","@LVSLIST",0x3
	DATA "LISTVW","@LVSNOCOLUMNHEADER",0x4000
	DATA "LISTVW","@LVSNOLABELWRAP",0x80
	DATA "LISTVW","@LVSNOSCROLL",0x2000
	DATA "LISTVW","@LVSREPORT",0x1
	DATA "LISTVW","@LVSSHOWSELALWAYS",0x8
	DATA "LISTVW","@LVSSORTASCENDING",0x10
	DATA "LISTVW","@LVSSORTDESCENDING",0x20
	DATA "LISTVW","@SYSMENU",0x80000
	DATA "LISTVW","@TABSTOP",0x10000
	DATA "LISTVW","@VSCROLL",0x200000
	DATA "RADIOB","@DISABLE",0x8000000
	DATA "RADIOB","@GROUP",0x20000
	DATA "RADIOB","@SS_NOTIFY",0x100
	DATA "RADIOB","@SYSMENU",0x80000
	DATA "RADIOB","@TABSTOP",0x10000
	DATA "RICHED","@CTEDITAUTOH",0x80
	DATA "RICHED","@CTEDITAUTOV",0x40
	DATA "RICHED","@CTEDITCENTER",0x1
	DATA "RICHED","@CTEDITLEFT",0x0
	DATA "RICHED","@CTEDITMULTI",0x4
	DATA "RICHED","@CTEDITNUMBER",0x2000
	DATA "RICHED","@CTEDITRETURN",0x1000
	DATA "RICHED","@CTEDITRIGHT",0x2
	DATA "RICHED","@CTEDITRO",0x800
	DATA "RICHED","@DISABLE",0x8000000
	DATA "RICHED","@GROUP",0x20000
	DATA "RICHED","@HSCROLL",0x100000
	DATA "RICHED","@SYSMENU",0x80000
	DATA "RICHED","@TABSTOP",0x10000
	DATA "RICHED","@VSCROLL",0x200000
	DATA "STATIC","@DISABLE",0x8000000
	DATA "STATIC","@SS_NOTIFY",0x100
	DATA "STATIC","@SYSMENU",0x80000
	DATA "TREEVW","@DISABLE",0x8000000
	DATA "TREEVW","@GROUP",0x20000
	DATA "TREEVW","@SYSMENU",0x80000
	DATA "TREEVW","@TABSTOP",0x10000
	DATA "TREEVW","@TVSDISABLEDRAGDROP",0x10
	DATA "TREEVW","@TVSEDITLABELS",0x8
	DATA "TREEVW","@TVSFULLROWSELECT",0x1000
	DATA "TREEVW","@TVSHASBUTTONS",0x1
	DATA "TREEVW","@TVSHASLINES",0x2
	DATA "TREEVW","@TVSINFOTIP",0x800
	DATA "TREEVW","@TVSLINESATROOT",0x4
	DATA "TREEVW","@TVSNOHSCROLL",0x8000
	DATA "TREEVW","@TVSNONEVENHEIGHT",0x4000
	DATA "TREEVW","@TVSNOSCROLL",0x2000
	DATA "TREEVW","@TVSNOTOOLTIPS",0x80
	DATA "TREEVW","@TVSRTLREADING",0x40
	DATA "TREEVW","@TVSSHOWSELALWAYS",0x20
	DATA "TREEVW","@TVSSINGLEEXPAND",0x400
	DATA "TREEVW","@TVSTRACKSELECT",0x200
	DATA "WINDOW","@AUTOSCALE",0x100
	DATA "WINDOW","@BORDER",0x800000
	DATA "WINDOW","@CAPTION",0xC00000
	DATA "WINDOW","@FIXEDSIZE",0x80
	DATA "WINDOW","@HIDDEN",0x800
	DATA "WINDOW","@HSCROLL",0x100000
	DATA "WINDOW","@MAXBOX",0x10000
	DATA "WINDOW","@MAXIMIZED",0x1000000
	DATA "WINDOW","@MDIFRAME",0x20
	DATA "WINDOW","@MINBOX",0x20000
	DATA "WINDOW","@MINIMIZED",0x20000000
	DATA "WINDOW","@NOAUTODRAW",0x10
	DATA "WINDOW","@NOCAPTION",0x40
	DATA "WINDOW","@SIZE",0x40000
	DATA "WINDOW","@SYSMENU",0x80000
	DATA "WINDOW","@TOOLWINDOW",0x200
	DATA "WINDOW","@TOPMOST",0x400
	DATA "WINDOW","@USEDEFAULT",0x80000000
	DATA "WINDOW","@VSCROLL",0x200000
	DATA "END","END",0
DATAEND

'Read specials list into arrays
RESTORE specials
max=-1
DO
	GETDATA specials,text1
	GETDATA specials,text2
	GETDATA specials,u
	IF text1<>"END"
		max++
		IF max > imax
			PRINT "Too many codeb[",max,"]"
			INPUT text1
		ENDIF
		codeb[max]=text1
		codec[max]=text2
		coden[max]=u
		'PRINT codest[maxt]," ",codesn[maxt]
	ENDIF
UNTIL text1="END"

PRINT

PRINT "Enter Hex value (0x50810080)"
INPUT text
'u=0x50810080
d=Hex2Dec(text)
u=d
'PRINT u," ",HEX$(u)
'PRINT "\t",hex$(u)
PRINT
FOR i=0 to max
	t=coden[i]&u
	'PRINT cvals[i],"-",t
	IF t = coden[i] and t <> 0
		text1=HEX$(coden[i])
		l=LEN(text1)
		IF l<8 then text1=SPACE$(8-l)+text1
		'IF ctext[i]="edit  "
			print USING("###",i),"\t",text1,"    ",codeb[i],"\t",codec[i]
			'u-=t
		'ENDIF
	endif
next i

PRINT
PRINT "Done"

WAITCON
END

sub Hex2Dec(n1:String),DOUBLE
DEF nl1,nSteper,nCount,x,nVal:int
DEF nGVal:DOUBLE
DEF hVal:String

nl1 = Len(n1)
nGVal = 0
nSteper = 16
nCount = 1
For x = nl1 To 1 Step -1
	hVal = UCase$(Mid$(n1, x, 1))

	Select hVal
		Case "A"
			nVal = 10
		Case "B"
			nVal = 11
		Case "C"
			nVal = 12
		Case "D"
			nVal = 13
		Case "E"
			nVal = 14
		Case "F"
			nVal = 15
		Default
			nVal = Val(hVal)
	EndSelect
	Stepit = (nSteper ^ (nCount - 1))
	nGVal = nGVal + nVal * Stepit
	nCount++
Next x

return nGVal
ENDSUB
