----------------------------------------------------------------------
--- Knud van Eeden --- 27 August 2008 - 06:10 am ---------------------

Language: Computer: BASIC: BBCBASIC: Windows: Unicode: Character: World: How to show Unicode value for a given character in a menu? [Chinese, Japanese, Korean, Greek, Arabic, Hebrew, Cyrillic, Hindi, ...]

---

--- cut here: begin --------------------------------------------------
*FONT Arial Unicode MS, 16 REM as usual FOR I% = 32 TO 255 PRINT CHR$( I% ); " "; REPEAT UNTIL GET NEXT END : REM now higher values FOR I% = 1024 TO 1100 PRINT CHR$( I% ); " "; REPEAT UNTIL GET NEXT END :
--- cut here: end ---------------------------------------------------- It looks like the values are mapped to the 0 to 255 range in the CHR$() function. So it looks not possible to show Unicode characters with a decimal value greater than 255 using the CHR$() technique (e.g. in a menu). E.g. Russian (starts at decimal 1024, or &0400) That characters should be contained in e.g. the Arial Unicode font. So in the menu strings itself, you can only use characters as shown on Unicode page 00. === So outside the menu you can show the characters graphically, and you have to calculate its position on the screen. --- cut here: begin --------------------------------------------------
*FONT Arial Unicode MS, 16 : PROCMenuCreate : REPEAT ON SYS PROCMenuSelect( @wparam% ) : RETURN UNTIL INKEY( 10 ) = 0 REM note: using "UNTIL FALSE" here would give 100% CPU : END : : : DEF PROCMenuCreate SYS "CreateMenu" TO hmenu% SYS "SetMenu", @hwnd%, hmenu% SYS "AppendMenu", hmenu%, 0, 1, "French: " + CHR$(&00E9) : REM this will show é OK REM you can only use CHR$() with values until 255. So this is too big SYS "AppendMenu", hmenu%, 0, 2, "Russian: " + CHR$(&041F) : SYS "AppendMenu", hmenu%, 0, 3, "Chinese: " ENDPROC : DEF PROCMenuSelect( I% ) IF I% = 1 THEN PROCMenuOption1 IF I% = 2 THEN PROCMenuOption2 IF I% = 3 THEN PROCMenuOption3 REM and so on ... ENDPROC : DEF PROCMenuOption1 PRINT "This is a French character (using its Unicode value &00E9)" PROCUnicodeCharacter( &00, &E9, 800, 100 ) ENDPROC : DEF PROCMenuOption2 PRINT "This is a Russian character (using its Unicode value &041F)" PROCUnicodeCharacter( &04, &1F, 800, 200 ) ENDPROC : DEF PROCMenuOption3 PRINT "This is a Chinese character (using its Unicode value &4E06)" PROCUnicodeCharacter( &4E, &06, 800, 300 ) ENDPROC DEF PROCUnicodeCharacter( byte1I%, byte2I%, xScreenI%, yScreenI% ) LOCAL uniCode$ uniCode$ = CHR$( byte2I% ) + CHR$( byte1I% ) SYS "TextOutW", @memhdc%, xScreenI%, yScreenI%, uniCode$, LEN( uniCode$ ) / 2 SYS "InvalidateRect", @hwnd%, 0, 0 ENDPROC :
--- cut here: end ---------------------------------------------------- === Book: see also: === Diagram: see also: === File: see also: === File: version: control: see also: === Help: see also: === Image: see also: === Internet: see also: === Podcast: see also: === Record: see also: === Screencast: see also: === Table: see also: === Video: see also: === <version>1.0.0.0.1</version> ----------------------------------------------------------------------

Share |

This web page is created and maintained using the Semware TSE text editor