Another example for fun 😉.
#include <GUIConstantsEx.au3>
GUICreate("Pictograms Listview", 420, 800)
Local $idListview = GUICtrlCreateListView("Pictograms-1|Pictograms-2|Pictograms-3|Pictograms-4", 10, 10, 400, 780)
GUICtrlSetFont(-1, 40)
; https://www.gaijin.at/de/infos/unicode-zeichentabelle-piktogramme-1
For $i = 0x1F300 To 0x1F3FF
GUICtrlCreateListViewItem(_ChrW($i) & "|" & _ChrW($i + 256) & "|" & _ChrW($i + 256 + 256) & "|" & _ChrW($i + 256 + 256 + 256), $idListview)
Next
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func _ChrW($iCodePoint) ; By trancexx
; https://www.autoitscript.com/forum/topic/149307-another-unicode-question/?do=findComment&comment=1064547
If $iCodePoint <= 0xFFFF Then Return ChrW($iCodePoint)
If $iCodePoint > 0x10FFFF Then Return SetError(1, 0, "")
Local $tOut = DllStructCreate("word[2]")
Local $high_surrogate = BitShift($iCodePoint, 10) + 0xD7C0
Local $low_surrogate = BitAND($iCodePoint, 0x3FF) + 0xDC00
ConsoleWrite("CodePoint = " & @TAB & @TAB & Hex($iCodePoint, 4) & @CRLF)
ConsoleWrite("High Surrogate = " & @TAB & Hex($high_surrogate, 4) & @CRLF)
ConsoleWrite("Low Surrogate = " & @TAB & Hex($low_surrogate, 4) & @CRLF)
ConsoleWrite(@CRLF)
DllStructSetData($tOut, 1, $high_surrogate, 1)
DllStructSetData($tOut, 1, $low_surrogate, 2)
Return BinaryToString(DllStructGetData(DllStructCreate("byte[4]", DllStructGetPtr($tOut)), 1), 2)
EndFunc ;==>_ChrW