Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
;*************************************************************************** ;** ASCIIChart.wbt ;** Adrian Hayes, 2004:06:02 ;** - Displays a dialog with ASCII and Extended ASCII characters, copies ;** characters or ASCII code values to clipboard ;*************************************************************************** AddExtender("wilx34i.dll") ;; Initialize some variables cDialogINIT = 0 cDialogTIMER = 1 cDialogBUTTON = 2 cDialogRADIO = 3 DCGET_TITLE = 4 DCGET_RADIO = 2 DCSET_REPLACE_TITLE = 4 DCSTATE_NULL = 0 DCSTATE_SET_FOCUS = 1 DCSTATE_ADD_STYLE = 3 DCSTATE_REMOVE_STYLE = 4 DCSTATE_GET_FOCUS = 5 DCSTYLE_DISABLED = 2 ;; Returns 0 if no arrow keys pressed ;; 1 - 4 (1 = left, 2 = up, 3 = right, 4 = down #DefineFunction GetArrowKeys() buf = BinaryAlloc(256) sDLLName = StrCat(DirWindows(1), "user32.dll") DllCall(sDLLName, long:"GetKeyboardState", lpbinary:buf) BinaryEodSet(buf, 256) For CurOffset = 1 To 4 If BinaryPeek(buf, 36 + CurOffset) & 128 BinaryFree(buf) Return CurOffset EndIf Next CurOffset BinaryFree(buf) Return 0 #EndFunction ;; Dynamically creates or re-titles buttons - saves me from having to manually create them, as WinBatch allows me to be lazy. :-) #DefineSubRoutine GenerateButtons() For Column = 1 To 4 For Row = 0 To 31 CurCharDec = Row + (Column - 1) * 32 + (HighBit * 128) ;; ASCII 0-127, or 128 to 255 if HighBit CurConCap = Num2Char(CurCharDec) SpecialValue = ItemLocate(CurCharDec, SpecialValues, @TAB) ;; Exceptions If SpecialValue Then CurConCap = ItemExtract(SpecialValue, SpecialCaptions, @TAB) CurConNum = CurCharDec + 18 - (HighBit * 128) If PreInit CurConTab = CurCharDec + 12 - (HighBit * 128) CurConRetVal = CurConNum - 11 ;; Current Control number - 17 fixed controls, plus 6 pre-existing button return values CurConX = 5 + ((Column - 1) * 34) ;; Control X coordinate CurConY = Row * 9 ;; Control Y coordinate If CurConNum < 10 Then CurConDef = StrCat("ASCII00", CurConNum) If CurConNum > 9 && CurConNum < 100 Then CurConDef = StrCat("ASCII0", CurConNum) If CurConNum > 99 Then CurConDef = StrCat("ASCII", CurConNum) %CurConDef%=`%CurConX%,%CurConY%,016,009,PUSHBUTTON,DEFAULT,"%CurConCap%",%CurConRetVal%,%CurConTab%,DEFAULT,"Terminal|6144|40|65329","0|0|0",DEFAULT` ASCIINumControls = ASCIINumControls + 1 Else If CurCharDec == 34 || CurCharDec == 96 CurConCap = StrSub(CurConCap, 1, 1) EndIf DialogControlSet(ASCIIHandle, CurConNum, DCSET_REPLACE_TITLE, CurConCap) EndIf Next Row Next Column Return (1) ;; End of GenerateButtons #EndSubRoutine #DefineSubRoutine ASCII(ASCIIHandle, EventCode, ControlNum, res4, res5) Switch EventCode Case cDialogINIT DialogProcOptions(ASCIIHandle, cDialogTIMER, 75) ;; Set Timer for arrow keyboard tracking DialogProcOptions(ASCIIHandle, cDialogBUTTON, @ON) DialogProcOptions(ASCIIHandle, cDialogRADIO, @ON) DialogControlState(ASCIIHandle, 13, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) ;; Initially disable buttons DialogControlState(ASCIIHandle, 14, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 15, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 16, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 17, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) CurActiveCon = 13 Break Case cDialogTIMER ArrowKey = GetArrowKeys() ;; Check if arrow keys pressed. OldActiveCon = CurActiveCon ;; Check if button selection has changed. CurActiveCon = DialogControlState(ASCIIHandle, DCSTATE_NULL, DCSTATE_GET_FOCUS, DCSTATE_NULL) If CurActiveCon != OldActiveCon && CurActiveCon > 17 DialogControlState(ASCIIHandle, 13, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) ;; Enable buttons DialogControlState(ASCIIHandle, 14, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 15, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 16, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 17, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) CurCharSelected = DialogControlGet(ASCIIHandle, CurActiveCon, DCGET_TITLE) DialogControlSet(ASCIIHandle, 13, DCSET_REPLACE_TITLE, CurCharSelected) SpecialCharacter = ItemLocate(CurCharSelected, SpecialCaptions, @TAB) If SpecialCharacter CurCharDec = ItemExtract(SpecialCharacter, SpecialValues, @TAB) CurCharDesc = ItemExtract(SpecialCharacter, SpecialDescriptions, @TAB) DialogControlSet(ASCIIHandle, 5, DCSET_REPLACE_TITLE, CurCharDesc) Else CurCharDec = Char2Num(CurCharSelected) DialogControlSet(ASCIIHandle, 5, DCSET_REPLACE_TITLE, "") EndIf DialogControlSet(ASCIIHandle, 14, DCSET_REPLACE_TITLE, CurCharDec) DialogControlSet(ASCIIHandle, 15, DCSET_REPLACE_TITLE, xBaseConvert(CurCharDec, 10, 16)) DialogControlSet(ASCIIHandle, 16, DCSET_REPLACE_TITLE, xBaseConvert(CurCharDec, 10, 8)) If CurCharDec > 31 && CurCharDec < 128 DialogControlState(ASCIIHandle, 17, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlSet(ASCIIHandle, 17, DCSET_REPLACE_TITLE, StrCat("&", CurCharDec)) Else DialogControlState(ASCIIHandle, 17, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) DialogControlSet(ASCIIHandle, 17, DCSET_REPLACE_TITLE, "") EndIf EndIf If CurActiveCon > 17 ;; If an ASCII character button selected, check for arrow key & move set focus Switch ArrowKey Case 0 ;; No arrow keys pressed Return -2 Case 1 ;; Left Arrow If CurActiveCon > 49 SetActiveCon = CurActiveCon - 32 Else If CurActiveCon == 18 SetActiveCon = 145 Else SetActiveCon = CurActiveCon + 95 EndIf EndIf Break Case 2 ;; Up If CurActiveCon == 18 SetActiveCon = 145 Else SetActiveCon = CurActiveCon - 1 EndIf Break Case 3 ;; Right If CurActiveCon < 114 SetActiveCon = CurActiveCon + 32 Else If CurActiveCon == 145 SetActiveCon = 18 Else SetActiveCon = CurActiveCon - 95 EndIf EndIf Break Case 4 ;; Down If CurActiveCon == 145 SetActiveCon = 18 Else SetActiveCon = CurActiveCon + 1 EndIf Break EndSwitch DialogControlState(ASCIIHandle, SetActiveCon, DCSTATE_SET_FOCUS, DCSTATE_NULL) EndIf Break Case cDialogBUTTON Switch ControlNum Case 1 ;; Cancel Return 0 Case 13 ;; Copy Character to Clipboard ToClip = DialogControlGet(ASCIIHandle, 13, DCGET_TITLE) SpecialCharacter = ItemLocate(ToClip, SpecialCaptions, @TAB) If SpecialCharacter Then ToClip = Num2Char(ItemExtract(SpecialCharacter, SpecialValues, @TAB)) ClipPut(ToClip) Return (1) Case 14 ;; Copy Decimal to Clipboard Case 15 ;; Copy Hexadecimal to Clipboard Case 16 ;; Copy Octal to Clipboard Case 17 ;; Copy HTML to Clipboard ToClip = DialogControlGet(ASCIIHandle, ControlNum, DCGET_TITLE) If ControlNum == 17 Then ToClip = StrSub(ToClip, 2, -1) ;; Strip leading ampersand ClipPut(ToClip) Return 1 Case ControlNum ;; One of the ASCII Characters DialogControlState(ASCIIHandle, 13, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 14, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 15, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 16, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlState(ASCIIHandle, 17, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) CurCharSelected = DialogControlGet(ASCIIHandle, ControlNum, DCGET_TITLE) DialogControlSet(ASCIIHandle, 13, DCSET_REPLACE_TITLE, CurCharSelected) SpecialCharacter = ItemLocate(CurCharSelected, SpecialCaptions, @TAB) If SpecialCharacter CurCharDec = ItemExtract(SpecialCharacter, SpecialValues, @TAB) CurCharDesc = ItemExtract(SpecialCharacter, SpecialDescriptions, @TAB) DialogControlSet(ASCIIHandle, 5, DCSET_REPLACE_TITLE, CurCharDesc) Else CurCharDec = Char2Num(CurCharSelected) DialogControlSet(ASCIIHandle, 5, DCSET_REPLACE_TITLE, "") EndIf DialogControlSet(ASCIIHandle, 14, DCSET_REPLACE_TITLE, CurCharDec) DialogControlSet(ASCIIHandle, 15, DCSET_REPLACE_TITLE, xBaseConvert(CurCharDec, 10, 16)) DialogControlSet(ASCIIHandle, 16, DCSET_REPLACE_TITLE, xBaseConvert(CurCharDec, 10, 8)) If CurCharDec > 31 && CurCharDec < 128 DialogControlState(ASCIIHandle, 17, DCSTATE_REMOVE_STYLE, DCSTYLE_DISABLED) DialogControlSet(ASCIIHandle, 17, DCSET_REPLACE_TITLE, StrCat("&", CurCharDec)) Else DialogControlState(ASCIIHandle, 17, DCSTATE_ADD_STYLE, DCSTYLE_DISABLED) DialogControlSet(ASCIIHandle, 17, DCSET_REPLACE_TITLE, "") EndIf If MouseInfo(0) != CurCharSelected ;; If keyboard used then switch focus to clipboard buttons DialogControlState(ASCIIHandle, 13, DCSTATE_SET_FOCUS, DCSTATE_NULL) EndIf Break EndSwitch Break Case cDialogRADIO HighBit = DialogControlGet(ASCIIHandle, 3, DCGET_RADIO) ;; Extended ASCII GenerateButtons() Break EndSwitch Return -2 ;; End of ASCII Dialog Callback Subroutine #EndSubRoutine ASCIIFormat=`WWWDLGED,6.1` ASCIICaption=`ASCII Chart` ASCIIX=99999 ASCIIY=99999 ASCIIWidth=252 ASCIIHeight=291 ASCIINumControls=017 ASCIIProcedure=`ASCII` ASCIIFont=`DEFAULT` ASCIITextColor=`DEFAULT` ASCIIBackground=`DEFAULT,DEFAULT` ASCIIConfig=0 ASCII001=`213,271,028,012,PUSHBUTTON,DEFAULT,"Cancel",0,145,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII002=`153,007,084,012,RADIOBUTTON,CharSet,"&ASCII Codes (0 - 127)",1,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII003=`153,019,094,012,RADIOBUTTON,CharSet,"&Extended ASCII Codes (128 - 255)",2,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII004=`185,062,060,026,STATICTEXT,DEFAULT,"Press to copy this character to the clipboard",DEFAULT,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII005=`143,100,102,020,STATICTEXT,DEFAULT,DEFAULT,DEFAULT,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII006=`143,157,026,012,STATICTEXT,DEFAULT,"Decimal:",DEFAULT,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII007=`143,171,026,012,STATICTEXT,DEFAULT,"Hex:",DEFAULT,6,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII008=`143,185,026,012,STATICTEXT,DEFAULT,"Octal:",DEFAULT,7,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII009=`143,199,026,012,STATICTEXT,DEFAULT,"HTML:",DEFAULT,8,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII010=`143,135,074,020,STATICTEXT,DEFAULT,"Press a button below to copy its value to clipboard",DEFAULT,9,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII011=`143,047,044,008,STATICTEXT,DEFAULT,"Selected:",DEFAULT,10,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII012=`183,119,010,010,STATICTEXT,DEFAULT,"or",DEFAULT,11,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII013=`143,059,039,039,PUSHBUTTON,DEFAULT,DEFAULT,2,140,32,"Terminal|16384|40|65329","0|0|0",DEFAULT` ASCII014=`173,155,022,012,PUSHBUTTON,DEFAULT,DEFAULT,3,141,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII015=`173,169,022,012,PUSHBUTTON,DEFAULT,DEFAULT,4,142,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII016=`173,183,022,012,PUSHBUTTON,DEFAULT,DEFAULT,5,143,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ASCII017=`173,197,022,012,PUSHBUTTON,DEFAULT,DEFAULT,6,144,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ;;ButtonPushed=Dialog("ASCII") SpecialCaptions = "NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI DLE " SpecialCaptions = StrCat(SpecialCaptions, "DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC ") SpecialCaptions = StrCat(SpecialCaptions, "FS GS RS US SPC """" %% `` DEL") SpecialDescriptions = "Null Start of Heading Start of Text End of Text End of Transmission Enquiry " SpecialDescriptions = StrCat(SpecialDescriptions, "Acknowledge Bell Backspace Horizontal Tab Line Feed ") SpecialDescriptions = StrCat(SpecialDescriptions, "Vertical Tab Form Feed Carriage Return Shift Out ") SpecialDescriptions = StrCat(SpecialDescriptions, "Shift In Data Link Escape Device Control 1 Device Control 2 ") SpecialDescriptions = StrCat(SpecialDescriptions, "Device Control 3 Device Control 4 Negative Acknowledge ") SpecialDescriptions = StrCat(SpecialDescriptions, "Synchronous Idle End of Transmission Block Cancel ") SpecialDescriptions = StrCat(SpecialDescriptions, "End of Medium Substitute Escape File Separator Group Separator ") SpecialDescriptions = StrCat(SpecialDescriptions, "Record Separator Unit Separator Space Delete") SpecialValues = "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 37 96 127" HighBit = @FALSE PreInit = @TRUE GenerateButtons() PreInit = @FALSE ButtonPushed=Dialog("ASCII") Exit
Article ID: W16684
File Created: 2005:02:18:12:21:52
Last Updated: 2005:02:18:12:21:52