Tổng hợp Unicode trong VB6

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Đăng trả lời
baohiep
Thành viên danh dự
Thành viên danh dự
Bài viết: 109
Ngày tham gia: Chủ nhật 27/12/2009 6:37 pm
Đến từ: Tam Kỳ
Has thanked: 3 times
Been thanked: 9 times

Tổng hợp Unicode trong VB6

Gửi bài by baohiep »

Tên bài viết: Tổng hợp Unicode trong VB6
Tác giả: Lê Bảo Hiệp
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Tổng hợp các bài viết về Unicode trong 4rum
Clipboard Unicode:
Bài cUniClipboard:
viewtopic.php?f=36&t=15436
Tác giả: doicanhden

Tạo một Module Class tên cClipboard:
  1. Public Enum Clipboard_Format
  2.      CF_TEXT = 1
  3.      CF_BITMAP = 2
  4.      CF_METAFILEPICT = 3
  5.      CF_SYLK = 4
  6.      CF_DIF = 5
  7.      CF_TIFF = 6
  8.      CF_OEMTEXT = 7
  9.      CF_DIB = 8
  10.      CF_PALETTE = 9
  11.      CF_PENDATA = 10
  12.      CF_RIFF = 11
  13.      CF_WAVE = 12
  14.      CF_UNICODETEXT = 13
  15.      CF_ENHMETAFILE = 14
  16.      CF_HDROP = 15
  17.      CF_LOCALE = 16
  18.      CF_MAX = 17
  19.      CF_OWNERDISPLAY = 128
  20.      CF_DSPTEXT = 129
  21.      CF_DSPBITMAP = 130
  22.      CF_DSPMETAFILEPICT = 131
  23.      CF_DSPENHMETAFILE = 142
  24.      CF_PRIVATEFIRST = 512
  25.      CF_PRIVATELAST = 767
  26.      CF_GDIOBJFIRST = 768
  27.      CF_GDIOBJLAST = 1023
  28. End Enum
  29. Private Enum GlobalMemory
  30.     GMEM_DDESHARE = &H2000
  31.     GMEM_DISCARDABLE = &H100
  32.     GMEM_DISCARDED = &H4000
  33.     GMEM_FIXED = &H0
  34.     GMEM_INVALID_HANDLE = &H8000
  35.     GMEM_LOCKCOUNT = &HFF
  36.     GMEM_MODIFY = &H80
  37.     GMEM_MOVEABLE = &H2
  38.     GMEM_NOCOMPACT = &H10
  39.     GMEM_NODISCARD = &H20
  40.     GMEM_NOT_BANKED = &H1000
  41.     GMEM_NOTIFY = &H4000
  42.     GMEM_SHARE = &H2000
  43.     GMEM_VALID_FLAGS = &H7F72
  44.     GMEM_ZEROINIT = &H40
  45.     GMEM_LOWER = GMEM_NOT_BANKED
  46.     GPTR = (GMEM_FIXED Or GMEM_ZEROINIT)
  47.     GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
  48. End Enum
  49. Public Enum FileEffectConstants
  50.   EffectCopy = 1
  51.   EffectMove = 2
  52. End Enum
  53. Private Type POINTAPI
  54.    X As Long
  55.    y As Long
  56. End Type
  57. Private Type DROPFILES
  58.    pFiles As Long
  59.    pt As POINTAPI
  60.    fNC As Long
  61.    fWide As Long
  62. End Type
  63.  
  64. Private Declare Function RegisterClipboardFormat Lib "User32" Alias "RegisterClipboardFormatW" (ByVal lpString As Long) As Long
  65. Private Declare Function IsClipboardFormatAvailable Lib "User32" (ByVal wFormat As Long) As Long
  66. Private Declare Function EnumClipboardFormats Lib "User32" (ByVal wFormat As Long) As Long
  67. Private Declare Function CountClipboardFormats Lib "User32" () As Long
  68. Private Declare Function GetClipboardFormatName Lib "User32" Alias "GetClipboardFormatNameW" (ByVal wFormat As Long, ByVal lpString As Long, ByVal nMaxCount As Long) As Long
  69. Private Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long
  70. Private Declare Function EmptyClipboard Lib "User32" () As Long
  71. Private Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
  72. Private Declare Function GetClipboardData Lib "User32" (ByVal wFormat As Long) As Long
  73. Private Declare Function CloseClipboard Lib "User32" () As Long
  74. Private Declare Function GlobalAlloc Lib "Kernel32" (ByVal wFlags As GlobalMemory, ByVal dwBytes As Long) As Long
  75. Private Declare Function GlobalFree Lib "Kernel32" (ByVal hMem As Long) As Long
  76. Private Declare Function GlobalLock Lib "Kernel32" (ByVal hMem As Long) As Long
  77. 'Private Declare Function GlobalReAlloc Lib "Kernel32" (ByVal hMem As Long, ByVal dwBytes As Long, ByVal wFlags As Long) As Long
  78. Private Declare Function GlobalSize Lib "Kernel32" (ByVal hMem As Long) As Long
  79. Private Declare Function GlobalUnlock Lib "Kernel32" (ByVal hMem As Long) As Long
  80. Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
  81. Private Declare Function LongStringCopy Lib "Kernel32" Alias "lstrcpyW" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
  82. Private Declare Function StrLen Lib "Kernel32" Alias "lstrlenW" (ByVal Ptr As Long) As Long
  83. Private Declare Function DragQueryFile Lib "Shell32" Alias "DragQueryFileW" (ByVal hDrop As Long, ByVal UINT As Long, ByVal lpStr As Long, ByVal ch As Long) As Long
  84. Public Function SetText(ByVal sText$) As Boolean
  85.     Dim sPtr&, iLen&, iLock&
  86.     On Error GoTo LabExit
  87.     iLen = LenB(sText) + 2
  88.     sPtr = GlobalAlloc(GHND, iLen)
  89.     iLock = GlobalLock(sPtr)
  90.     Call LongStringCopy(iLock, StrPtr(sText))
  91.     Call GlobalUnlock(sPtr)
  92.     If OpenClipboard(0&) Then
  93.         Call EmptyClipboard
  94.         Call SetClipboardData(CF_UNICODETEXT, sPtr)
  95.         Call CloseClipboard
  96.         SetText = True
  97.     End If
  98. LabExit
  99. End Function
  100. Public Function GetText() As String
  101.     Dim lPtr&, lLenght&, lMemH&, sData$
  102.     If OpenClipboard(0&) Then
  103.         lPtr = GetClipboardData(CF_UNICODETEXT)
  104.         lMemH = GlobalLock(lPtr)
  105.         lLenght = GlobalSize(lPtr)
  106.         sData = String$(lLenght \ 2 - 1, Chr(0))
  107.         Call LongStringCopy(StrPtr(sData), lMemH)
  108.         Call GlobalUnlock(lPtr)
  109.         Call CloseClipboard
  110.         GetText = sData
  111.     End If
  112. End Function
  113. Public Function Clear() As Boolean
  114.     If OpenClipboard(0&) Then
  115.         Call EmptyClipboard
  116.         Call CloseClipboard
  117.         Clear = True
  118.     End If
  119. End Function
  120. Public Function GetFiles(Optional ByRef iFileCount As Long, Optional ByRef lEffect As FileEffectConstants) As String() 'Tra ve 1 mang chua danh sach cac tap tin
  121.   Dim hDrop&, lFormat&, hGlobal&, iFile&, sFileName$, iPos&, sFiles$()
  122.     On Error GoTo LabExit
  123.     If OpenClipboard(0&) Then
  124.         lFormat = RegisterClipboardFormat(StrPtr("Preferred DropEffect")) 'Get ID
  125.       hDrop = GetClipboardData(CF_HDROP)
  126.         hGlobal = GetClipboardData(lFormat) 'For Effect
  127.       Call CloseClipboard
  128.     End If
  129.     If (hDrop <> 0) Then
  130.         iFileCount = DragQueryFile(hDrop, -1&, StrPtr(""), 0&)
  131.         If (iFileCount > 0) Then
  132.             ReDim sFiles(1 To iFileCount) As String
  133.             sFileName = String$(260, Chr(0))
  134.             For iFile = 1 To iFileCount
  135.                 Call DragQueryFile(hDrop, iFile - 1, StrPtr(sFileName), Len(sFileName))
  136.                 iPos = InStr(sFileName, vbNullChar)
  137.                 If (iPos <> 0) Then
  138.                     sFiles(iFile) = Left$(sFileName, iPos - 1)
  139.                 Else
  140.                     sFiles(iFile) = sFileName
  141.                 End If
  142.                 GetFiles = sFiles
  143.                 ReDim sFiles(0)
  144.             Next iFile
  145.             If (hGlobal <> 0) Then
  146.                 Call CopyMemory(lEffect, ByVal hGlobal, 4) 'For Effect
  147.           End If
  148.         End If
  149.     End If
  150. LabExit
  151. End Function
  152. Public Function SetFiles(ByRef sFiles() As String, Optional ByVal lEffect As FileEffectConstants = EffectCopy) As Boolean
  153.     Dim i&, sData$, hMemH&, hMemH2&
  154.     Dim DF As DROPFILES
  155.     Dim B() As Byte
  156.     Dim lFormat&
  157.     On Error GoTo LabExit
  158.     For i = LBound(sFiles) To UBound(sFiles)
  159.         sData = sData & sFiles(i) & vbNullChar
  160.     Next i
  161.     sData = sData & vbNullChar
  162.     DF.pFiles = Len(DF) ' Size of Structure 20 bytes
  163.   DF.fWide = 1 ' 0 To ASCII; 1 To Unicode
  164.   lFormat = RegisterClipboardFormat(StrPtr("Preferred DropEffect")) ' Get ID
  165.   hMemH = GlobalAlloc(GHND, Len(DF) + LenB(sData))
  166.     hMemH2 = GlobalAlloc(GHND, 4) ' For Effect
  167.   hMemH = GlobalLock(hMemH)
  168.     hMemH2 = GlobalLock(hMemH2) ' For Effect
  169.   Call CopyMemory(ByVal hMemH, DF, Len(DF))
  170.     Call CopyMemory(ByVal (hMemH + Len(DF)), ByVal StrPtr(sData), LenB(sData))
  171.     Call CopyMemory(ByVal hMemH2, lEffect, 4) ' For Effect
  172.   Call GlobalUnlock(hMemH)
  173.     Call GlobalUnlock(hMemH2) ' For Effect
  174.   If OpenClipboard(0&) Then
  175.         Call EmptyClipboard
  176.         Call SetClipboardData(CF_HDROP, hMemH)
  177.         Call SetClipboardData(lFormat, hMemH2) ' For Effect
  178.       Call CloseClipboard
  179.         SetFiles = True
  180.     End If
  181. LabExit
  182. End Function
  183. Public Function GetFormat(ByVal lFormat As Long) As Boolean
  184.     GetFormat = CBool(IsClipboardFormatAvailable(lFormat))
  185. End Function
  186. Public Function AddFormat(ByVal sName As String) As Long
  187.     Dim wFormat&
  188.     wFormat = RegisterClipboardFormat(StrPtr(sName & Chr$(0)))
  189.     If (wFormat > &HC000&) Then AddFormat = wFormat
  190. End Function
  191. Public Function GetBinaryData(ByVal lFormat As Long) As Byte()
  192.     Dim hMemH&, lSize&, lClipboard&, bTemp() As Byte
  193.     If CBool(IsClipboardFormatAvailable(lFormat)) Then
  194.         If OpenClipboard(0&) Then
  195.             lClipboard = GetClipboardData(lFormat)
  196.             lSize = GlobalSize(lClipboard)
  197.             If lSize > 0 Then
  198.                 hMemH = GlobalLock(lClipboard)
  199.                 ReDim bTemp(0 To lSize - 1)
  200.                 Call CopyMemory(bTemp(0), ByVal hMemH, ByVal lSize)
  201.                 Call GlobalUnlock(lClipboard)
  202.                 GetBinaryData = bTemp
  203.                 ReDim bTemp(0)
  204.             End If
  205.             Call CloseClipboard
  206.         End If
  207.     End If
  208. End Function
  209. Public Function SetBinaryData(ByRef bData() As Byte, ByVal lFormat As Long) As Boolean
  210.     Dim lSize&, lPtr&, hMemH&
  211.     lSize = UBound(bData) - LBound(bData) + 1
  212.     hMemH = GlobalAlloc(GHND, lSize)
  213.     If (hMemH <> 0) Then
  214.         lPtr = GlobalLock(hMemH)
  215.         CopyMemory ByVal lPtr, bData(LBound(bData)), lSize
  216.         Call GlobalUnlock(hMemH)
  217.         If OpenClipboard(0&) Then
  218.             Call SetClipboardData(lFormat, hMemH)
  219.             Call CloseClipboard
  220.             SetBinaryData = True
  221.         End If
  222.     End If
  223. End Function
  224. Public Function FormatCount() As Long
  225.     FormatCount = CountClipboardFormats()
  226. End Function
  227. Public Function ListNameFormat(Optional ByRef lListCount As Long) As String()
  228.     'Lay Danh Sach Ten Cac Dinh Dang Ton Tai Tren Clipboard
  229.   Dim lR&, i&, sName$()
  230.     If (OpenClipboard(0&)) Then
  231.         lR = EnumClipboardFormats(0)
  232.         If (lR <> 0) Then
  233.             Do
  234.                 ReDim Preserve sName(i)
  235.                 sName(i) = FormatName(lR)
  236.                 sName(i) = IIf(sName(i) = vbNullString, "[Unknow]", sName(i))
  237.                 lR = EnumClipboardFormats(lR)
  238.                 i = i + 1
  239.             Loop While lR <> 0
  240.         End If
  241.         Call CloseClipboard
  242.         lListCount = i - 1
  243.         ListNameFormat = sName
  244.     End If
  245. End Function
  246. Public Function ListIDFormat(Optional ByRef lListCount As Long) As Long()
  247.     'Lay Danh Sach ID Cac Dinh Dang Ton Tai Tren Clipboard
  248.   Dim lR&, i&, lID&()
  249.     If (OpenClipboard(0&)) Then
  250.         lR = EnumClipboardFormats(0)
  251.         If (lR <> 0) Then
  252.             Do
  253.                 ReDim Preserve lID(i)
  254.                 lID(i) = lR
  255.                 lR = EnumClipboardFormats(lR)
  256.                 i = i + 1
  257.             Loop While lR <> 0
  258.         End If
  259.         Call CloseClipboard
  260.         lListCount = i - 1
  261.         ListIDFormat = lID
  262.     End If
  263. End Function
  264. Public Function FormatName(ByVal lFormatID As Long) As String
  265.     Dim lSize&, lR&, sTmp$
  266.     If (lFormatID >= 1 And lFormatID <= 17) Then
  267.         Select Case lFormatID
  268.         Case CF_TEXT
  269.             sTmp = "Text"
  270.         Case CF_BITMAP
  271.             sTmp = "Bitmap Picture"
  272.         Case CF_METAFILEPICT
  273.             sTmp = "Meta-File Picture"
  274.         Case CF_SYLK
  275.             sTmp = "Microsoft Symbolic Link (SYLK) data."
  276.         Case CF_DIF
  277.            sTmp = "Software Arts"
  278.         Case CF_TIFF
  279.             sTmp = "Tagged Image File Format (TIFF) Picture"
  280.         Case CF_OEMTEXT
  281.             sTmp = "Text (OEM)"
  282.         Case CF_DIB
  283.             sTmp = "DIB Bitmap Picture"
  284.         Case CF_PALETTE
  285.             sTmp = "Colour Palette"
  286.         Case CF_PENDATA
  287.             sTmp = "Pen Data"
  288.         Case CF_RIFF
  289.             sTmp = "RIFF Audio data"
  290.         Case CF_WAVE
  291.             sTmp = "Wave File"
  292.         Case CF_UNICODETEXT
  293.             sTmp = "Text (Unicode)"
  294.         Case CF_ENHMETAFILE
  295.             sTmp = "Enhanced Meta-File Picture"
  296.          Case CF_HDROP
  297.             sTmp = "File List"
  298.         Case CF_LOCALE
  299.             sTmp = "Text Locale Identifier"
  300.         End Select
  301.     Else
  302.         sTmp = String$(255, 0)
  303.         lR = GetClipboardFormatName(lFormatID, StrPtr(sTmp), 255)
  304.         If (lR <> 0) Then
  305.             sTmp = Left$(sTmp, lR)
  306.         End If
  307.     End If
  308.     FormatName = sTmp
  309. End Function


Khai báo trong Form:
  1. Dim Clipboard As New cClipboard


Download:
download/file.php?id=11094

Tạo Form có tiêu đề Tiếng Việt:
Bài Tạo tiêu đề Form Tiếng Việt đơn giản:
viewtopic.php?t=14402
Tác giả: pctester2020

Thêm vào Form:
  1. 'Unicode cho Title cua Form
  2. Private Declare Function DefWindowProcW Lib "user32" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  3.  
  4. Public Sub SetUniFormCaption(ByVal hWnd As Long, ByVal sUniText As String)
  5. '---------------------------------------------------------------------------------------
  6. ' Function   SetUniFormCaption (Unicode TitleBar, Frame, Button, CheckBox, Option)
  7. ' Author     thuongall@yahoo.com
  8. ' Address    Dong Khoi
  9. '---------------------------------------------------------------------------------------
  10.  
  11.     DefWindowProcW hWnd, &HC, &H0&, StrPtr(sUniText)  'WM_SETTEXT=&HC
  12. End Sub
  13.  
  14. Public Function Telex2Uni(ByVal TelexStr As String) As String ' Chuyen chuoi go theo kieu Telex thanh chuoi tieng Viet Unicode
  15. '---------------------------------------------------------------------------------------
  16. ' Function   Telex2Uni
  17. ' Author     phantronghiep07
  18. ' Phone      0915 080 282
  19. '---------------------------------------------------------------------------------------
  20.   Dim i As Integer
  21.     Dim MaAcii, Telex
  22.    
  23.      MaAcii = Array(7845, 7847, 7849, 7851, 7853, 226, 225, 224, 7843, 227, 7841, 7855, 7857, 7859, _
  24.                                 7861, 7863, 259, 250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, _
  25.                                 7871, 7873, 7875, 7877, 7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, _
  26.                                 7895, 7897, 244, 243, 242, 7887, 245, 7885, 7899, 7901, 7903, 7905, 7907, 417, _
  27.                                 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929, 7925, 273, 7844, 7846, 7848, _
  28.                                 7850, 7852, 194, 193, 192, 7842, 195, 7840, 7854, 7856, 7858, 7860, 7862, 258, _
  29.                                 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872, 7874, _
  30.                                 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, 212, _
  31.                                 211, 210, 7886, 213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, _
  32.                                 7882, 221, 7922, 7926, 7928, 7924, 272)
  33.                        
  34.      Telex = Array("aas", "aaf", "aar", "aax", "aaj", "aa", "as", "af", "ar", "ax", "aj", "aws", "awf", _
  35.                             "awr", "awx", "awj", "aw", "us", "uf", "ur", "ux", "uj", "uws", "uwf", "uwr", "uwx", _
  36.                             "uwj", "uw", "ees", "eef", "eer", "eex", "eej", "ee", "es", "ef", "er", "ex", "ej", _
  37.                             "oos", "oof", "oor", "oox", "ooj", "oo", "os", "of", "or", "ox", "oj", "ows", "owf", _
  38.                             "owr", "owx", "owj", "ow", "is", "if", "ir", "ix", "ij", "ys", "yf", "yr", "yx", "yj", _
  39.                             "dd", "AAS", "AAF", "AAR", "AAX", "AAJ", "AA", "AS", "AF", "AR", "AX", _
  40.                             "AJ", "AWS", "AWF", "AWR", "AWX", "AWJ", "AW", "US", "UF", "UR", "UX", _
  41.                             "UJ", "UWS", "UWF", "UWR", "UWX", "UWJ", "UW", "EES", "EEF", "EER", _
  42.                             "EEX", "EEJ", "EE", "ES", "EF", "ER", "EX", "EJ", "OOS", "OOF", "OOR", _
  43.                             "OOX", "OOJ", "OO", "OS", "OF", "OR", "OX", "OJ", "OWS", "OWF", "OWR", _
  44.                             "OWX", "OWJ", "OW", "IS", "IF", "IR", "IX", "IJ", "YS", "YF", "YR", "YX", _
  45.                             "YJ", "DD")
  46.                            
  47.     Telex2Uni = TelexStr
  48.     For i = 0 To 133
  49.         Telex2Uni = Replace(Telex2Uni, Telex(i), ChrW(MaAcii(i)))
  50.     Next i
  51.     Telex2Uni = Replace(Telex2Uni, "'", "") ' Neu muon hien thi ko dau thi phai go ky tu ' . Vd Vi'sual Ba'sic
  52. End Function


Sử dụng:
  1. Private Sub Form_Load()
  2.     'Go tieng viet kieu Telex
  3.     SetUniFormCaption Me.hWnd, Telex2Uni("Vis duj hieern thij Tieesng Vieejt treen tieeu ddeef Fo'rm")
  4. End Sub


Tạo Menu Tiếng Việt:
Bài 1 dòng code = 1 menu đã việt hóa! OK!:
viewtopic.php?f=36&t=2011
Tác giả: zZ_Shine_Zz

Tạo Module tên modMenu:
  1. Option Explicit
  2.  
  3. '============================================
  4. ' Ban co the gui bat ki y kien nao ve dia chi
  5. ' gambo_cd3000@yahoo.com
  6. ' thanks
  7. '============================================
  8.  
  9. '============================================
  10. '()   ()  {{___________}}  |Author Tran The Huy
  11. '(^ _ ^) {{  I LOVE AN  }} |Ver 1.00
  12. '_______  {{___________}}  |Mail gambo_cd3000@yahoo.com
  13. '============================================
  14.  
  15. Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
  16.  
  17. Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
  18. Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
  19. Public Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
  20. Public Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  21. Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  22.  
  23. Public Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoW" (ByVal hMenu As Long, ByVal un As Long, ByVal BOOL As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
  24. Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As MENUITEMINFO) As Long
  25. Public Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
  26.  
  27. Public Type MENUITEMINFO
  28.    cbSize As Long
  29.    fMask As Long
  30.    fType As Long
  31.    fState As Long
  32.    wID As Long
  33.    hSubMenu As Long
  34.    hbmpChecked As Long
  35.    hbmpUnchecked As Long
  36.    dwItemData As Long
  37.    dwTypeData As Long
  38.    cch As Long
  39.    hbmpItem As Long
  40. End Type
  41.  
  42. Public Const MF_BITMAP = &H4&
  43. Public Const MF_STRING = &H0&
  44.  
  45. Public Sub ToUniMenu(ByVal hwnd As Long)
  46.     Dim hMenu As Long, sMenu As Long, ItemID As Long, CountItem As Long
  47.     Dim AdsMenu As New clsArrayVar, AdItemPos As New clsArrayVar
  48.     Dim j As Long, k As String * 100, mInfo As MENUITEMINFO
  49.     Dim fc As Long
  50.    
  51.     With mInfo
  52.         .cbSize = Len(mInfo) .fType = &H200 .fMask = &H10
  53.     End With
  54.    
  55.     hMenu = GetMenu(hwnd)
  56.     CountItem = GetMenuItemCount(hMenu)
  57.    
  58.     For j = 0 To CountItem - 1
  59.         AdsMenu.AddItem hMenu
  60.         AdItemPos.AddItem j
  61.     Next
  62.    
  63.     Do While CountItem > 0
  64.        
  65.         ItemID = GetMenuItemID(AdsMenu.List(0), AdItemPos.List(0))
  66.  
  67.         If ItemID = -1 Then
  68.        
  69.             ItemID = GetSubMenu(AdsMenu.List(0), AdItemPos.List(0))
  70.             fc = GetMenuItemCount(ItemID)
  71.             CountItem = CountItem + fc
  72.            
  73.             For j = 0 To fc - 1
  74.                 AdsMenu.AddItem ItemID
  75.                 AdItemPos.AddItem j
  76.             Next
  77.            
  78.         End If
  79.        
  80.         GetMenuString AdsMenu.List(0), ItemID, k, 50, 0
  81.        
  82.         mInfo.dwTypeData = StrPtr(ToUni(k))
  83.        
  84.         SetMenuItemInfo AdsMenu.List(0), AdItemPos.List(0), 1, mInfo
  85.        
  86.         SetMenuItemBitmaps AdsMenu.List(0), ItemID, 0, frmMain.Picture1.Picture.Handle, frmMain.Picture2.Picture.Handle
  87.                
  88.         CountItem = CountItem - 1
  89.         AdItemPos.RemoveItem 0
  90.         AdsMenu.RemoveItem 0
  91.         fc = -1
  92.     Loop
  93. End Sub


Tạo Module tên modUniTextVer3:
  1. Option Explicit
  2. 'Version 3.00. Upgrade by  Tran The Huy
  3.  
  4. Public Function ToUniByVNI(ByVal sText As String)
  5.     Dim i As Integer, j As Integer
  6.     Dim sCurChar As String, sPreChar As String, sPreTxt As String
  7.     For j = 1 To 2
  8.         For i = 2 To Len(sText)
  9.             sCurChar = Mid(sText, i, 1)
  10.             sPreTxt = Left(sText, i - 2)
  11.             sPreChar = Mid(sText, i - 1, 1)
  12.             Select Case sCurChar
  13.                 Case "1"
  14.                     Select Case sPreChar
  15.                         'a
  16.                        Case "a" sText = sPreTxt & ChrW$(&HE1) & Right(sText, Len(sText) - i)
  17.                         Case "A" sText = sPreTxt & ChrW$(&HC1) & Right(sText, Len(sText) - i)
  18.                         Case ChrW$(&HE2) sText = sPreTxt & ChrW$(&H1EA5) & Right(sText, Len(sText) - i)
  19.                         Case ChrW$(&HC2) sText = sPreTxt & ChrW$(&H1EA4) & Right(sText, Len(sText) - i)
  20.                         Case ChrW$(&H103) sText = sPreTxt & ChrW$(&H1EAF) & Right(sText, Len(sText) - i)
  21.                         Case ChrW$(&H102) sText = sPreTxt & ChrW$(&H1EAE) & Right(sText, Len(sText) - i)
  22.  
  23.                         'e
  24.                        Case "e" sText = sPreTxt & ChrW$(&HE9) & Right(sText, Len(sText) - i)
  25.                         Case "E" sText = sPreTxt & ChrW$(&HC9) & Right(sText, Len(sText) - i)
  26.                         Case ChrW$(&HEA) sText = sPreTxt & ChrW$(&H1EBF) & Right(sText, Len(sText) - i)
  27.                         Case ChrW$(&HCA) sText = sPreTxt & ChrW$(&H1EBE) & Right(sText, Len(sText) - i)
  28.  
  29.                         'i
  30.                        Case "i" sText = sPreTxt & ChrW$(&HED) & Right(sText, Len(sText) - i)
  31.                         Case "I" sText = sPreTxt & ChrW$(&HCD) & Right(sText, Len(sText) - i)
  32.  
  33.                         'o
  34.                        Case "o" sText = sPreTxt & ChrW$(&HF3) & Right(sText, Len(sText) - i)
  35.                         Case "O" sText = sPreTxt & ChrW$(&HD3) & Right(sText, Len(sText) - i)
  36.                         Case ChrW$(&HF4) sText = sPreTxt & ChrW$(&H1ED1) & Right(sText, Len(sText) - i)
  37.                         Case ChrW$(&HD4) sText = sPreTxt & ChrW$(&H1ED0) & Right(sText, Len(sText) - i)
  38.                         Case ChrW$(&H1A1) sText = sPreTxt & ChrW$(&H1EDB) & Right(sText, Len(sText) - i)
  39.                         Case ChrW$(&H1A0) sText = sPreTxt & ChrW$(&H1EDA) & Right(sText, Len(sText) - i)
  40.  
  41.                         'u
  42.                        Case "u" sText = sPreTxt & ChrW$(&HFA) & Right(sText, Len(sText) - i)
  43.                         Case "U" sText = sPreTxt & ChrW$(&HDA) & Right(sText, Len(sText) - i)
  44.                         Case ChrW$(&H1B0) sText = sPreTxt & ChrW$(&H1EE9) & Right(sText, Len(sText) - i)
  45.                         Case ChrW$(&H1AF) sText = sPreTxt & ChrW$(&H1EE8) & Right(sText, Len(sText) - i)
  46.  
  47.                         'y
  48.                        Case "y" sText = sPreTxt & ChrW$(&HFD) & Right(sText, Len(sText) - i)
  49.                         Case "Y" sText = sPreTxt & ChrW$(&HDD) & Right(sText, Len(sText) - i)
  50.  
  51.                     End Select
  52.  
  53.                 Case "2"
  54.                     Select Case sPreChar
  55.                         'a
  56.                        Case "a" sText = sPreTxt & ChrW$(&HE0) & Right(sText, Len(sText) - i)
  57.                         Case "A" sText = sPreTxt & ChrW$(&HC0) & Right(sText, Len(sText) - i)
  58.                         Case ChrW$(&HE2) sText = sPreTxt & ChrW$(&H1EA7) & Right(sText, Len(sText) - i)
  59.                         Case ChrW$(&HC2) sText = sPreTxt & ChrW$(&H1EA6) & Right(sText, Len(sText) - i)
  60.                         Case ChrW$(&H103) sText = sPreTxt & ChrW$(&H1EB1) & Right(sText, Len(sText) - i)
  61.                         Case ChrW$(&H102) sText = sPreTxt & ChrW$(&H1EB0) & Right(sText, Len(sText) - i)
  62.  
  63.                         'e
  64.                        Case "e" sText = sPreTxt & ChrW$(&HE8) & Right(sText, Len(sText) - i)
  65.                         Case "E" sText = sPreTxt & ChrW$(&HC8) & Right(sText, Len(sText) - i)
  66.                         Case ChrW$(&HEA) sText = sPreTxt & ChrW$(&H1EC1) & Right(sText, Len(sText) - i)
  67.                         Case ChrW$(&HCA) sText = sPreTxt & ChrW$(&H1EC0) & Right(sText, Len(sText) - i)
  68.  
  69.                         'i
  70.                        Case "i" sText = sPreTxt & ChrW$(&HEC) & Right(sText, Len(sText) - i)
  71.                         Case "I" sText = sPreTxt & ChrW$(&HCC) & Right(sText, Len(sText) - i)
  72.  
  73.                         'o
  74.                        Case "o" sText = sPreTxt & ChrW$(&HF2) & Right(sText, Len(sText) - i)
  75.                         Case "O" sText = sPreTxt & ChrW$(&HD2) & Right(sText, Len(sText) - i)
  76.                         Case ChrW$(&HF4) sText = sPreTxt & ChrW$(&H1ED3) & Right(sText, Len(sText) - i)
  77.                         Case ChrW$(&HD4) sText = sPreTxt & ChrW$(&H1ED2) & Right(sText, Len(sText) - i)
  78.                         Case ChrW$(&H1A1) sText = sPreTxt & ChrW$(&H1EDD) & Right(sText, Len(sText) - i)
  79.                         Case ChrW$(&H1A0) sText = sPreTxt & ChrW$(&H1EDC) & Right(sText, Len(sText) - i)
  80.  
  81.                         'u
  82.                        Case "u" sText = sPreTxt & ChrW$(&HF9) & Right(sText, Len(sText) - i)
  83.                         Case "U" sText = sPreTxt & ChrW$(&HD9) & Right(sText, Len(sText) - i)
  84.                         Case ChrW$(&H1B0) sText = sPreTxt & ChrW$(&H1EEB) & Right(sText, Len(sText) - i)
  85.                         Case ChrW$(&H1AF) sText = sPreTxt & ChrW$(&H1EEA) & Right(sText, Len(sText) - i)
  86.  
  87.                         'y
  88.                        Case "y" sText = sPreTxt & ChrW$(&H1EF3) & Right(sText, Len(sText) - i)
  89.                         Case "Y" sText = sPreTxt & ChrW$(&H1EF2) & Right(sText, Len(sText) - i)
  90.  
  91.                     End Select
  92.  
  93.                 Case "3"
  94.                     Select Case sPreChar
  95.                         'a
  96.                        Case "a" sText = sPreTxt & ChrW$(&H1EA3) & Right(sText, Len(sText) - i)
  97.                         Case "A" sText = sPreTxt & ChrW$(&H1EA2) & Right(sText, Len(sText) - i)
  98.                         Case ChrW$(&HE2) sText = sPreTxt & ChrW$(&H1EA9) & Right(sText, Len(sText) - i)
  99.                         Case ChrW$(&HC2) sText = sPreTxt & ChrW$(&H1EA8) & Right(sText, Len(sText) - i)
  100.                         Case ChrW$(&H103) sText = sPreTxt & ChrW$(&H1EB3) & Right(sText, Len(sText) - i)
  101.                         Case ChrW$(&H102) sText = sPreTxt & ChrW$(&H1EB2) & Right(sText, Len(sText) - i)
  102.  
  103.                         'e
  104.                        Case "e" sText = sPreTxt & ChrW$(&H1EBB) & Right(sText, Len(sText) - i)
  105.                         Case "E" sText = sPreTxt & ChrW$(&H1EBA) & Right(sText, Len(sText) - i)
  106.                         Case ChrW$(&HEA) sText = sPreTxt & ChrW$(&H1EC3) & Right(sText, Len(sText) - i)
  107.                         Case ChrW$(&HCA) sText = sPreTxt & ChrW$(&H1EC2) & Right(sText, Len(sText) - i)
  108.  
  109.                         'i
  110.                        Case "i" sText = sPreTxt & ChrW$(&H1EC9) & Right(sText, Len(sText) - i)
  111.                         Case "I" sText = sPreTxt & ChrW$(&H1EC8) & Right(sText, Len(sText) - i)
  112.  
  113.                         'o
  114.                        Case "o" sText = sPreTxt & ChrW$(&H1ECF) & Right(sText, Len(sText) - i)
  115.                         Case "O" sText = sPreTxt & ChrW$(&H1ECE) & Right(sText, Len(sText) - i)
  116.                         Case ChrW$(&HF4) sText = sPreTxt & ChrW$(&H1ED5) & Right(sText, Len(sText) - i)
  117.                         Case ChrW$(&HD4) sText = sPreTxt & ChrW$(&H1ED4) & Right(sText, Len(sText) - i)
  118.                         Case ChrW$(&H1A1) sText = sPreTxt & ChrW$(&H1EDF) & Right(sText, Len(sText) - i)
  119.                         Case ChrW$(&H1A0) sText = sPreTxt & ChrW$(&H1EDE) & Right(sText, Len(sText) - i)
  120.  
  121.                         'u
  122.                        Case "u" sText = sPreTxt & ChrW$(&H1EE7) & Right(sText, Len(sText) - i)
  123.                         Case "U" sText = sPreTxt & ChrW$(&H1EE6) & Right(sText, Len(sText) - i)
  124.                         Case ChrW$(&H1B0) sText = sPreTxt & ChrW$(&H1EED) & Right(sText, Len(sText) - i)
  125.                         Case ChrW$(&H1AF) sText = sPreTxt & ChrW$(&H1EEC) & Right(sText, Len(sText) - i)
  126.  
  127.                         'y
  128.                        Case "y" sText = sPreTxt & ChrW$(&H1EF7) & Right(sText, Len(sText) - i)
  129.                         Case "Y" sText = sPreTxt & ChrW$(&H1EF6) & Right(sText, Len(sText) - i)
  130.  
  131.                     End Select
  132.  
  133.                 Case "4"
  134.                     Select Case sPreChar
  135.                         'a
  136.                        Case "a" sText = sPreTxt & ChrW$(&HE3) & Right(sText, Len(sText) - i)
  137.                         Case "A" sText = sPreTxt & ChrW$(&HC3) & Right(sText, Len(sText) - i)
  138.                         Case ChrW$(&HE2) sText = sPreTxt & ChrW$(&H1EAB) & Right(sText, Len(sText) - i)
  139.                         Case ChrW$(&HC2) sText = sPreTxt & ChrW$(&H1EAA) & Right(sText, Len(sText) - i)
  140.                         Case ChrW$(&H103) sText = sPreTxt & ChrW$(&H1EB5) & Right(sText, Len(sText) - i)
  141.                         Case ChrW$(&H102) sText = sPreTxt & ChrW$(&H1EB4) & Right(sText, Len(sText) - i)
  142.  
  143.                         'e
  144.                        Case "e" sText = sPreTxt & ChrW$(&H1EBD) & Right(sText, Len(sText) - i)
  145.                         Case "E" sText = sPreTxt & ChrW$(&H1EBC) & Right(sText, Len(sText) - i)
  146.                         Case ChrW$(&HEA) sText = sPreTxt & ChrW$(&H1EC5) & Right(sText, Len(sText) - i)
  147.                         Case ChrW$(&HCA) sText = sPreTxt & ChrW$(&H1EC4) & Right(sText, Len(sText) - i)
  148.  
  149.                         'i
  150.                        Case "i" sText = sPreTxt & ChrW$(&H129) & Right(sText, Len(sText) - i)
  151.                         Case "I" sText = sPreTxt & ChrW$(&H128) & Right(sText, Len(sText) - i)
  152.  
  153.                         'o
  154.                        Case "o" sText = sPreTxt & ChrW$(&HF5) & Right(sText, Len(sText) - i)
  155.                         Case "O" sText = sPreTxt & ChrW$(&HD5) & Right(sText, Len(sText) - i)
  156.                         Case ChrW$(&HF4) sText = sPreTxt & ChrW$(&H1ED7) & Right(sText, Len(sText) - i)
  157.                         Case ChrW$(&HD4) sText = sPreTxt & ChrW$(&H1ED6) & Right(sText, Len(sText) - i)
  158.                         Case ChrW$(&H1A1) sText = sPreTxt & ChrW$(&H1EE1) & Right(sText, Len(sText) - i)
  159.                         Case ChrW$(&H1A0) sText = sPreTxt & ChrW$(&H1EE0) & Right(sText, Len(sText) - i)
  160.  
  161.                         'u
  162.                        Case "u" sText = sPreTxt & ChrW$(&H169) & Right(sText, Len(sText) - i)
  163.                         Case "U" sText = sPreTxt & ChrW$(&H168) & Right(sText, Len(sText) - i)
  164.                         Case ChrW$(&H1B0) sText = sPreTxt & ChrW$(&H1EEF) & Right(sText, Len(sText) - i)
  165.                         Case ChrW$(&H1AF) sText = sPreTxt & ChrW$(&H1EEE) & Right(sText, Len(sText) - i)
  166.  
  167.                         'y
  168.                        Case "y" sText = sPreTxt & ChrW$(&H1EF9) & Right(sText, Len(sText) - i)
  169.                         Case "Y" sText = sPreTxt & ChrW$(&H1EF8) & Right(sText, Len(sText) - i)
  170.                     End Select
  171.  
  172.                 Case "5"
  173.                     Select Case sPreChar
  174.                         'a
  175.                        Case "a" sText = sPreTxt & ChrW$(&H1EA1) & Right(sText, Len(sText) - i)
  176.                         Case "A" sText = sPreTxt & ChrW$(&H1EA0) & Right(sText, Len(sText) - i)
  177.                         Case ChrW$(&HE2) sText = sPreTxt & ChrW$(&H1EAD) & Right(sText, Len(sText) - i)
  178.                         Case ChrW$(&HC2) sText = sPreTxt & ChrW$(&H1EAC) & Right(sText, Len(sText) - i)
  179.                         Case ChrW$(&H103) sText = sPreTxt & ChrW$(&H1EB7) & Right(sText, Len(sText) - i)
  180.                         Case ChrW$(&H102) sText = sPreTxt & ChrW$(&H1EB6) & Right(sText, Len(sText) - i)
  181.  
  182.                         'e
  183.                        Case "e" sText = sPreTxt & ChrW$(&H1EB9) & Right(sText, Len(sText) - i)
  184.                         Case "E" sText = sPreTxt & ChrW$(&H1EB8) & Right(sText, Len(sText) - i)
  185.                         Case ChrW$(&HEA) sText = sPreTxt & ChrW$(&H1EC7) & Right(sText, Len(sText) - i)
  186.                         Case ChrW$(&HCA) sText = sPreTxt & ChrW$(&H1EC6) & Right(sText, Len(sText) - i)
  187.  
  188.                         'i
  189.                        Case "i" sText = sPreTxt & ChrW$(&H1ECB) & Right(sText, Len(sText) - i)
  190.                         Case "I" sText = sPreTxt & ChrW$(&H1ECA) & Right(sText, Len(sText) - i)
  191.  
  192.                         'o
  193.                        Case "o" sText = sPreTxt & ChrW$(&H1ECD) & Right(sText, Len(sText) - i)
  194.                         Case "O" sText = sPreTxt & ChrW$(&H1ECC) & Right(sText, Len(sText) - i)
  195.                         Case ChrW$(&HF4) sText = sPreTxt & ChrW$(&H1ED9) & Right(sText, Len(sText) - i)
  196.                         Case ChrW$(&HD4) sText = sPreTxt & ChrW$(&H1ED8) & Right(sText, Len(sText) - i)
  197.                         Case ChrW$(&H1A1) sText = sPreTxt & ChrW$(&H1EE3) & Right(sText, Len(sText) - i)
  198.                         Case ChrW$(&H1A0) sText = sPreTxt & ChrW$(&H1EE2) & Right(sText, Len(sText) - i)
  199.  
  200.                         'u
  201.                        Case "u" sText = sPreTxt & ChrW$(&H1EE5) & Right(sText, Len(sText) - i)
  202.                         Case "U" sText = sPreTxt & ChrW$(&H1EE4) & Right(sText, Len(sText) - i)
  203.                         Case ChrW$(&H1B0) sText = sPreTxt & ChrW$(&H1EF1) & Right(sText, Len(sText) - i)
  204.                         Case ChrW$(&H1AF) sText = sPreTxt & ChrW$(&H1EF0) & Right(sText, Len(sText) - i)
  205.  
  206.                         'y
  207.                        Case "y" sText = sPreTxt & ChrW$(&H1EF5) & Right(sText, Len(sText) - i)
  208.                         Case "Y" sText = sPreTxt & ChrW$(&H1EF4) & Right(sText, Len(sText) - i)
  209.                     End Select
  210.  
  211.                 Case "6"
  212.                     Select Case sPreChar
  213.                         'a
  214.                        Case "a" sText = sPreTxt & ChrW$(&HE2) & Right(sText, Len(sText) - i)
  215.                         Case "A" sText = sPreTxt & ChrW$(&HC2) & Right(sText, Len(sText) - i)
  216.  
  217.                         'e
  218.                        Case "e" sText = sPreTxt & ChrW$(&HEA) & Right(sText, Len(sText) - i)
  219.                         Case "E" sText = sPreTxt & ChrW$(&HCA) & Right(sText, Len(sText) - i)
  220.  
  221.                         'o
  222.                        Case "o" sText = sPreTxt & ChrW$(&HF4) & Right(sText, Len(sText) - i)
  223.                         Case "O" sText = sPreTxt & ChrW$(&HD4) & Right(sText, Len(sText) - i)
  224.                     End Select
  225.  
  226.                 Case "7"
  227.                     Select Case sPreChar
  228.                         'o
  229.                        Case "o" sText = sPreTxt & ChrW$(&H1A1) & Right(sText, Len(sText) - i)
  230.                         Case "O" sText = sPreTxt & ChrW$(&H1A0) & Right(sText, Len(sText) - i)
  231.  
  232.                         'u
  233.                        Case "u" sText = sPreTxt & ChrW$(&H1B0) & Right(sText, Len(sText) - i)
  234.                         Case "U" sText = sPreTxt & ChrW$(&H1AF) & Right(sText, Len(sText) - i)
  235.                     End Select
  236.  
  237.                 Case "8"
  238.                     Select Case sPreChar
  239.                         'a
  240.                        Case "a" sText = sPreTxt & ChrW$(&H103) & Right(sText, Len(sText) - i)
  241.                         Case "A" sText = sPreTxt & ChrW$(&H102) & Right(sText, Len(sText) - i)
  242.                     End Select
  243.  
  244.                 Case "9"
  245.                     Select Case sPreChar
  246.                         'd
  247.                        Case "d" sText = sPreTxt & ChrW$(&H111) & Right(sText, Len(sText) - i)
  248.                         Case "D" sText = sPreTxt & ChrW$(&H110) & Right(sText, Len(sText) - i)
  249.                     End Select
  250.  
  251.             End Select
  252.         Next i
  253.     Next j
  254.     ToUniByVNI = sText
  255. End Function
  256.  
  257. Public Function ToUniByTelex(ByVal sText As String) As String
  258.     Dim i As Integer, j As Integer
  259.     Dim sCurChar As String, sPreChar As String, sPreTxt As String
  260.     Dim cc As String
  261.    
  262.     For j = 1 To 2
  263.         For i = 2 To Len(sText)
  264.             sCurChar = Mid(sText, i, 1)
  265.             sPreTxt = Left(sText, i - 2)
  266.             sPreChar = Mid(sText, i - 1, 1)
  267.             Select Case LCase(sCurChar)
  268.                 Case "o"
  269.                     Select Case sPreChar
  270.                         Case "o" sText = sPreTxt & "ô" & Right(sText, Len(sText) - i)
  271.                         Case UCase("o") sText = sPreTxt & UCase("ô") & Right(sText, Len(sText) - i)
  272.                         Case "ó" sText = sPreTxt & ChrW(&H1ED1) & Right(sText, Len(sText) - i)
  273.                         Case UCase("ó") sText = sPreTxt & UCase(ChrW(&H1ED1)) & Right(sText, Len(sText) - i)
  274.                         Case "ò" sText = sPreTxt & ChrW(&H1ED3) & Right(sText, Len(sText) - i)
  275.                         Case UCase("ò") sText = sPreTxt & UCase(ChrW(&H1ED3)) & Right(sText, Len(sText) - i)
  276.                         Case ChrW(&H1ECF) sText = sPreTxt & ChrW(&H1ED5) & Right(sText, Len(sText) - i)
  277.                         Case UCase(ChrW(&H1ECF)) sText = sPreTxt & UCase(ChrW(&H1ED5)) & Right(sText, Len(sText) - i)
  278.                         Case "õ" sText = sPreTxt & ChrW(&H1ED7) & Right(sText, Len(sText) - i)
  279.                         Case UCase("õ") sText = sPreTxt & UCase(ChrW(&H1ED7)) & Right(sText, Len(sText) - i)
  280.                         Case ChrW(&H1ECD) sText = sPreTxt & ChrW(&H1ED9) & Right(sText, Len(sText) - i)
  281.                         Case UCase(ChrW(&H1ECD)) sText = sPreTxt & UCase(ChrW(&H1ED9)) & Right(sText, Len(sText) - i)
  282.                     End Select
  283.                    
  284.                 Case "a"
  285.                     Select Case sPreChar
  286.                         Case "a" sText = sPreTxt & "â" & Right(sText, Len(sText) - i)
  287.                         Case UCase("a") sText = sPreTxt & UCase("â") & Right(sText, Len(sText) - i)
  288.                         Case "á" sText = sPreTxt & ChrW(&H1EA5) & Right(sText, Len(sText) - i)
  289.                         Case UCase("á") sText = sPreTxt & UCase(ChrW(&H1EA5)) & Right(sText, Len(sText) - i)
  290.                         Case "à" sText = sPreTxt & ChrW(&H1EA7) & Right(sText, Len(sText) - i)
  291.                         Case UCase("à") sText = sPreTxt & UCase(ChrW(&H1EA7)) & Right(sText, Len(sText) - i)
  292.                         Case ChrW(&H1EA3) sText = sPreTxt & ChrW(&H1EA9) & Right(sText, Len(sText) - i)
  293.                         Case UCase(ChrW(&H1EA3)) sText = sPreTxt & UCase(ChrW(&H1EA9)) & Right(sText, Len(sText) - i)
  294.                         Case "ã" sText = sPreTxt & ChrW(&H1EAB) & Right(sText, Len(sText) - i)
  295.                         Case UCase("ã") sText = sPreTxt & UCase(ChrW(&H1EAB)) & Right(sText, Len(sText) - i)
  296.                         Case ChrW(&H1EA1) sText = sPreTxt & ChrW(&H1EAD) & Right(sText, Len(sText) - i)
  297.                         Case UCase(ChrW(&H1EA1)) sText = sPreTxt & UCase(ChrW(&H1EAD)) & Right(sText, Len(sText) - i)
  298.                     End Select
  299.                    
  300.                 Case "w"
  301.                     Select Case sPreChar
  302.                         Case "a" sText = sPreTxt & ChrW(&H103) & Right(sText, Len(sText) - i)
  303.                         Case UCase("a") sText = sPreTxt & UCase(ChrW(&H103)) & Right(sText, Len(sText) - i)
  304.                         Case "á" sText = sPreTxt & ChrW(&H1EA5 + 9) & Right(sText, Len(sText) - i)
  305.                         Case UCase("á") sText = sPreTxt & UCase(ChrW(&H1EA5 + 9)) & Right(sText, Len(sText) - i)
  306.                         Case "à" sText = sPreTxt & ChrW(&H1EA7 + 9) & Right(sText, Len(sText) - i)
  307.                         Case UCase("à") sText = sPreTxt & UCase(ChrW(&H1EA7 + 9)) & Right(sText, Len(sText) - i)
  308.                         Case ChrW(&H1EA3) sText = sPreTxt & ChrW(&H1EA9 + 9) & Right(sText, Len(sText) - i)
  309.                         Case UCase(ChrW(&H1EA3)) sText = sPreTxt & UCase(ChrW(&H1EA9 + 9)) & Right(sText, Len(sText) - i)
  310.                         Case "ã" sText = sPreTxt & ChrW(&H1EAB + 9) & Right(sText, Len(sText) - i)
  311.                         Case UCase("ã") sText = sPreTxt & UCase(ChrW(&H1EAB + 9)) & Right(sText, Len(sText) - i)
  312.                         Case ChrW(&H1EA1) sText = sPreTxt & ChrW(&H1EAD + 9) & Right(sText, Len(sText) - i)
  313.                         Case UCase(ChrW(&H1EA1)) sText = sPreTxt & UCase(ChrW(&H1EAD + 9)) & Right(sText, Len(sText) - i)
  314.                        
  315.                         Case "o" sText = sPreTxt & ChrW(&H1A1) & Right(sText, Len(sText) - i)
  316.                         Case UCase("o") sText = sPreTxt & UCase(ChrW(&H1A1)) & Right(sText, Len(sText) - i)
  317.                         Case "ó" sText = sPreTxt & ChrW(&H1ED1 + 10) & Right(sText, Len(sText) - i)
  318.                         Case UCase("ó") sText = sPreTxt & UCase(ChrW(&H1ED1 + 10)) & Right(sText, Len(sText) - i)
  319.                         Case "ò" sText = sPreTxt & ChrW(&H1ED3 + 10) & Right(sText, Len(sText) - i)
  320.                         Case UCase("ò") sText = sPreTxt & UCase(ChrW(&H1ED3 + 10)) & Right(sText, Len(sText) - i)
  321.                         Case ChrW(&H1ECF) sText = sPreTxt & ChrW(&H1ED5 + 10) & Right(sText, Len(sText) - i)
  322.                         Case UCase(ChrW(&H1ECF)) sText = sPreTxt & UCase(ChrW(&H1ED5 + 10)) & Right(sText, Len(sText) - i)
  323.                         Case "õ" sText = sPreTxt & ChrW(&H1ED7 + 10) & Right(sText, Len(sText) - i)
  324.                         Case UCase("õ") sText = sPreTxt & UCase(ChrW(&H1ED7 + 10)) & Right(sText, Len(sText) - i)
  325.                         Case ChrW(&H1ECD) sText = sPreTxt & ChrW(&H1ED9 + 10) & Right(sText, Len(sText) - i)
  326.                         Case UCase(ChrW(&H1ECD)) sText = sPreTxt & UCase(ChrW(&H1ED9 + 10)) & Right(sText, Len(sText) - i)
  327.                        
  328.                         Case "u" sText = sPreTxt & ChrW(&H1B0) & Right(sText, Len(sText) - i)
  329.                         Case UCase("u") sText = sPreTxt & UCase(ChrW(&H1B0)) & Right(sText, Len(sText) - i)
  330.                         Case "ú" sText = sPreTxt & ChrW(&H1EE9) & Right(sText, Len(sText) - i)
  331.                         Case UCase("ú") sText = sPreTxt & UCase(ChrW(&H1EE9)) & Right(sText, Len(sText) - i)
  332.                         Case "ù" sText = sPreTxt & ChrW(&H1EEB) & Right(sText, Len(sText) - i)
  333.                         Case UCase("ù") sText = sPreTxt & UCase(ChrW(&H1EEB)) & Right(sText, Len(sText) - i)
  334.                         Case ChrW(&H1EE7) sText = sPreTxt & ChrW(&H1EED) & Right(sText, Len(sText) - i)
  335.                         Case UCase(ChrW(&H1EE7)) sText = sPreTxt & UCase(ChrW(&H1EED)) & Right(sText, Len(sText) - i)
  336.                         Case ChrW(&H169) sText = sPreTxt & ChrW(&H1EEF) & Right(sText, Len(sText) - i)
  337.                         Case UCase(ChrW(&H169)) sText = sPreTxt & UCase(ChrW(&H1EEF)) & Right(sText, Len(sText) - i)
  338.                         Case ChrW(&H1EE5) sText = sPreTxt & ChrW(&H1EF1) & Right(sText, Len(sText) - i)
  339.                         Case UCase(ChrW(&H1EE5)) sText = sPreTxt & UCase(ChrW(&H1EF1)) & Right(sText, Len(sText) - i)
  340.                    
  341.                     End Select
  342.                    
  343.                 Case "e"
  344.                     Select Case sPreChar
  345.                         Case "e" sText = sPreTxt & "ê" & Right(sText, Len(sText) - i)
  346.                         Case UCase("e") sText = sPreTxt & UCase("ê") & Right(sText, Len(sText) - i)
  347.                         Case "é" sText = sPreTxt & ChrW(&H1EBF) & Right(sText, Len(sText) - i)
  348.                         Case UCase("é") sText = sPreTxt & UCase(ChrW(&H1EBF)) & Right(sText, Len(sText) - i)
  349.                         Case "è" sText = sPreTxt & ChrW(&H1EC1) & Right(sText, Len(sText) - i)
  350.                         Case UCase("è") sText = sPreTxt & ChrW(&H1EC1) & Right(sText, Len(sText) - i)
  351.                         Case ChrW(&H1EBB) sText = sPreTxt & ChrW(&H1EC3) & Right(sText, Len(sText) - i)
  352.                         Case UCase(ChrW(&H1EBB)) sText = sPreTxt & UCase(ChrW(&H1EC3)) & Right(sText, Len(sText) - i)
  353.                         Case ChrW(&H1EBD) sText = sPreTxt & ChrW(&H1EC5) & Right(sText, Len(sText) - i)
  354.                         Case UCase(ChrW(&H1EBD)) sText = sPreTxt & UCase(ChrW(&H1EC5)) & Right(sText, Len(sText) - i)
  355.                         Case ChrW(&H1EB9) sText = sPreTxt & ChrW(&H1EC7) & Right(sText, Len(sText) - i)
  356.                         Case UCase(ChrW(&H1EB9)) sText = sPreTxt & UCase(ChrW(&H1EC7)) & Right(sText, Len(sText) - i)
  357.                     End Select
  358.                    
  359.                                  
  360.                 Case "d"
  361.                     Select Case sPreChar
  362.                         Case "d" sText = sPreTxt & ChrW(&H111) & Right(sText, Len(sText) - i)
  363.                         Case UCase("d") sText = sPreTxt & UCase(ChrW(&H110)) & Right(sText, Len(sText) - i)
  364.                     End Select
  365.                    
  366.                 Case "s"
  367.                     Select Case sPreChar
  368.                         Case "o" sText = sPreTxt & "ó" & Right(sText, Len(sText) - i)
  369.                         Case "O" sText = sPreTxt & UCase("ó") & Right(sText, Len(sText) - i)
  370.                         Case "a" sText = sPreTxt & "á" & Right(sText, Len(sText) - i)
  371.                         Case "A" sText = sPreTxt & UCase("á") & Right(sText, Len(sText) - i)
  372.                         Case "e" sText = sPreTxt & "é" & Right(sText, Len(sText) - i)
  373.                         Case "E" sText = sPreTxt & UCase("é") & Right(sText, Len(sText) - i)
  374.                         Case "u" sText = sPreTxt & "ú" & Right(sText, Len(sText) - i)
  375.                         Case "U" sText = sPreTxt & UCase("ú") & Right(sText, Len(sText) - i)
  376.                         Case "i" sText = sPreTxt & "í" & Right(sText, Len(sText) - i)
  377.                         Case "I" sText = sPreTxt & UCase("í") & Right(sText, Len(sText) - i)
  378.                         Case "y" sText = sPreTxt & "ý" & Right(sText, Len(sText) - i)
  379.                         Case "Y" sText = sPreTxt & UCase("ý") & Right(sText, Len(sText) - i)
  380.                        
  381.                         Case "ô" sText = sPreTxt & ChrW(&H1ED1) & Right(sText, Len(sText) - i)
  382.                         Case UCase("ô") sText = sPreTxt & UCase(ChrW(&H1ED1)) & Right(sText, Len(sText) - i)
  383.                         Case ChrW(&H1A1) sText = sPreTxt & ChrW(&H1EDB) & Right(sText, Len(sText) - i)
  384.                         Case UCase(ChrW(&H1A1)) sText = sPreTxt & UCase(ChrW(&H1EDB)) & Right(sText, Len(sText) - i)
  385.                         Case "â" sText = sPreTxt & ChrW(&H1EA5) & Right(sText, Len(sText) - i)
  386.                         Case UCase("â") sText = sPreTxt & UCase(ChrW(&H1EA5)) & Right(sText, Len(sText) - i)
  387.                         Case ChrW(&H103) sText = sPreTxt & ChrW(&H1EAF) & Right(sText, Len(sText) - i)
  388.                         Case UCase(ChrW(&H103)) sText = sPreTxt & UCase(ChrW(&H1EAF)) & Right(sText, Len(sText) - i)
  389.                         Case "ê" sText = sPreTxt & ChrW(&H1EBF) & Right(sText, Len(sText) - i)
  390.                         Case UCase("ê") sText = sPreTxt & UCase(ChrW(&H1EBF)) & Right(sText, Len(sText) - i)
  391.                         Case ChrW(&H1B0) sText = sPreTxt & ChrW(&H1EE9) & Right(sText, Len(sText) - i)
  392.                         Case UCase(ChrW(&H1B0)) sText = sPreTxt & UCase(ChrW(&H1EE9)) & Right(sText, Len(sText) - i)
  393.                     End Select
  394.                 Case "f"
  395.                     Select Case sPreChar
  396.                         Case "o" sText = sPreTxt & "ò" & Right(sText, Len(sText) - i)
  397.                         Case "O" sText = sPreTxt & UCase("ò") & Right(sText, Len(sText) - i)
  398.                         Case "a" sText = sPreTxt & "à" & Right(sText, Len(sText) - i)
  399.                         Case "A" sText = sPreTxt & UCase("à") & Right(sText, Len(sText) - i)
  400.                         Case "e" sText = sPreTxt & "è" & Right(sText, Len(sText) - i)
  401.                         Case "E" sText = sPreTxt & UCase("è") & Right(sText, Len(sText) - i)
  402.                         Case "u" sText = sPreTxt & "ù" & Right(sText, Len(sText) - i)
  403.                         Case "U" sText = sPreTxt & UCase("ù") & Right(sText, Len(sText) - i)
  404.                         Case "i" sText = sPreTxt & "ì" & Right(sText, Len(sText) - i)
  405.                         Case "I" sText = sPreTxt & UCase("ì") & Right(sText, Len(sText) - i)
  406.                         Case "y" sText = sPreTxt & ChrW(&H1EF3) & Right(sText, Len(sText) - i)
  407.                         Case "Y" sText = sPreTxt & UCase(ChrW(&H1EF3)) & Right(sText, Len(sText) - i)
  408.                        
  409.                         Case "ô" sText = sPreTxt & ChrW(&H1ED1 + 2) & Right(sText, Len(sText) - i)
  410.                         Case UCase("ô") sText = sPreTxt & UCase(ChrW(&H1ED1 + 2)) & Right(sText, Len(sText) - i)
  411.                         Case ChrW(&H1A1) sText = sPreTxt & ChrW(&H1EDB + 2) & Right(sText, Len(sText) - i)
  412.                         Case UCase(ChrW(&H1A1)) sText = sPreTxt & UCase(ChrW(&H1EDB + 2)) & Right(sText, Len(sText) - i)
  413.                         Case "â" sText = sPreTxt & ChrW(&H1EA5 + 2) & Right(sText, Len(sText) - i)
  414.                         Case UCase("â") sText = sPreTxt & UCase(ChrW(&H1EA5 + 2)) & Right(sText, Len(sText) - i)
  415.                         Case ChrW(&H103) sText = sPreTxt & ChrW(&H1EAF + 2) & Right(sText, Len(sText) - i)
  416.                         Case UCase(ChrW(&H103)) sText = sPreTxt & UCase(ChrW(&H1EAF + 2)) & Right(sText, Len(sText) - i)
  417.                         Case "ê" sText = sPreTxt & ChrW(&H1EBF + 2) & Right(sText, Len(sText) - i)
  418.                         Case UCase("ê") sText = sPreTxt & UCase(ChrW(&H1EBF + 2)) & Right(sText, Len(sText) - i)
  419.                         Case ChrW(&H1B0) sText = sPreTxt & ChrW(&H1EE9 + 2) & Right(sText, Len(sText) - i)
  420.                         Case UCase(ChrW(&H1B0)) sText = sPreTxt & UCase(ChrW(&H1EE9 + 2)) & Right(sText, Len(sText) - i)
  421.                     End Select
  422.                 Case "r"
  423.                     Select Case sPreChar
  424.                         Case "o" sText = sPreTxt & ChrW(&H1ECF) & Right(sText, Len(sText) - i)
  425.                         Case "O" sText = sPreTxt & UCase(ChrW(&H1ECF)) & Right(sText, Len(sText) - i)
  426.                         Case "a" sText = sPreTxt & ChrW(&H1EA3) & Right(sText, Len(sText) - i)
  427.                         Case "A" sText = sPreTxt & UCase(ChrW(&H1EA3)) & Right(sText, Len(sText) - i)
  428.                         Case "e" sText = sPreTxt & ChrW(&H1EBB) & Right(sText, Len(sText) - i)
  429.                         Case "E" sText = sPreTxt & UCase(ChrW(&H1EBB)) & Right(sText, Len(sText) - i)
  430.                         Case "u" sText = sPreTxt & ChrW(&H1EE7) & Right(sText, Len(sText) - i)
  431.                         Case "U" sText = sPreTxt & UCase(ChrW(&H1EE7)) & Right(sText, Len(sText) - i)
  432.                         Case "i" sText = sPreTxt & ChrW(&H1EC9) & Right(sText, Len(sText) - i)
  433.                         Case "I" sText = sPreTxt & UCase(ChrW(&H1EC9)) & Right(sText, Len(sText) - i)
  434.                         Case "y" sText = sPreTxt & ChrW(&H1EF7) & Right(sText, Len(sText) - i)
  435.                         Case "Y" sText = sPreTxt & UCase(ChrW(&H1EF7)) & Right(sText, Len(sText) - i)
  436.                        
  437.                         Case "ô" sText = sPreTxt & ChrW(&H1ED1 + 4) & Right(sText, Len(sText) - i)
  438.                         Case UCase("ô") sText = sPreTxt & UCase(ChrW(&H1ED1 + 4)) & Right(sText, Len(sText) - i)
  439.                         Case ChrW(&H1A1) sText = sPreTxt & ChrW(&H1EDB + 4) & Right(sText, Len(sText) - i)
  440.                         Case UCase(ChrW(&H1A1)) sText = sPreTxt & UCase(ChrW(&H1EDB + 4)) & Right(sText, Len(sText) - i)
  441.                         Case "â" sText = sPreTxt & ChrW(&H1EA5 + 4) & Right(sText, Len(sText) - i)
  442.                         Case UCase("â") sText = sPreTxt & UCase(ChrW(&H1EA5 + 4)) & Right(sText, Len(sText) - i)
  443.                         Case ChrW(&H103) sText = sPreTxt & ChrW(&H1EAF + 4) & Right(sText, Len(sText) - i)
  444.                         Case UCase(ChrW(&H103)) sText = sPreTxt & UCase(ChrW(&H1EAF + 4)) & Right(sText, Len(sText) - i)
  445.                         Case "ê" sText = sPreTxt & ChrW(&H1EBF + 4) & Right(sText, Len(sText) - i)
  446.                         Case UCase("ê") sText = sPreTxt & UCase(ChrW(&H1EBF + 4)) & Right(sText, Len(sText) - i)
  447.                         Case ChrW(&H1B0) sText = sPreTxt & ChrW(&H1EE9 + 4) & Right(sText, Len(sText) - i)
  448.                         Case UCase(ChrW(&H1B0)) sText = sPreTxt & UCase(ChrW(&H1EE9 + 4)) & Right(sText, Len(sText) - i)
  449.                     End Select
  450.                 Case "x"
  451.                     Select Case sPreChar
  452.                         Case "o" sText = sPreTxt & "õ" & Right(sText, Len(sText) - i)
  453.                         Case "O" sText = sPreTxt & UCase("õ") & Right(sText, Len(sText) - i)
  454.                         Case "a" sText = sPreTxt & "ã" & Right(sText, Len(sText) - i)
  455.                         Case "A" sText = sPreTxt & UCase("ã") & Right(sText, Len(sText) - i)
  456.                         Case "e" sText = sPreTxt & ChrW(&H1EBD) & Right(sText, Len(sText) - i)
  457.                         Case "E" sText = sPreTxt & UCase(ChrW(&H1EBD)) & Right(sText, Len(sText) - i)
  458.                         Case "u" sText = sPreTxt & ChrW(&H169) & Right(sText, Len(sText) - i)
  459.                         Case "U" sText = sPreTxt & UCase(ChrW(&H169)) & Right(sText, Len(sText) - i)
  460.                         Case "i" sText = sPreTxt & ChrW(&H129) & Right(sText, Len(sText) - i)
  461.                         Case "I" sText = sPreTxt & UCase(ChrW(&H129)) & Right(sText, Len(sText) - i)
  462.                         Case "y" sText = sPreTxt & ChrW(&H1EF7 + 2) & Right(sText, Len(sText) - i)
  463.                         Case "Y" sText = sPreTxt & UCase(ChrW(&H1EF7 + 2)) & Right(sText, Len(sText) - i)
  464.                        
  465.                         Case "ô" sText = sPreTxt & ChrW(&H1ED1 + 6) & Right(sText, Len(sText) - i)
  466.                         Case UCase("ô") sText = sPreTxt & UCase(ChrW(&H1ED1 + 6)) & Right(sText, Len(sText) - i)
  467.                         Case ChrW(&H1A1) sText = sPreTxt & ChrW(&H1EDB + 6) & Right(sText, Len(sText) - i)
  468.                         Case UCase(ChrW(&H1A1)) sText = sPreTxt & UCase(ChrW(&H1EDB + 6)) & Right(sText, Len(sText) - i)
  469.                         Case "â" sText = sPreTxt & ChrW(&H1EA5 + 6) & Right(sText, Len(sText) - i)
  470.                         Case UCase("â") sText = sPreTxt & UCase(ChrW(&H1EA5 + 6)) & Right(sText, Len(sText) - i)
  471.                         Case ChrW(&H103) sText = sPreTxt & ChrW(&H1EAF + 6) & Right(sText, Len(sText) - i)
  472.                         Case UCase(ChrW(&H103)) sText = sPreTxt & UCase(ChrW(&H1EAF + 6)) & Right(sText, Len(sText) - i)
  473.                         Case "ê" sText = sPreTxt & ChrW(&H1EBF + 6) & Right(sText, Len(sText) - i)
  474.                         Case UCase("ê") sText = sPreTxt & UCase(ChrW(&H1EBF + 6)) & Right(sText, Len(sText) - i)
  475.                         Case ChrW(&H1B0) sText = sPreTxt & ChrW(&H1EE9 + 6) & Right(sText, Len(sText) - i)
  476.                         Case UCase(ChrW(&H1B0)) sText = sPreTxt & UCase(ChrW(&H1EE9 + 6)) & Right(sText, Len(sText) - i)
  477.                     End Select
  478.                    
  479.                 Case "j"
  480.                     Select Case sPreChar
  481.                         Case "o" sText = sPreTxt & ChrW(&H1ECD) & Right(sText, Len(sText) - i)
  482.                         Case "O" sText = sPreTxt & UCase(ChrW(&H1ECD)) & Right(sText, Len(sText) - i)
  483.                         Case "a" sText = sPreTxt & ChrW(&H1EA1) & Right(sText, Len(sText) - i)
  484.                         Case "A" sText = sPreTxt & UCase(ChrW(&H1EA1)) & Right(sText, Len(sText) - i)
  485.                         Case "e" sText = sPreTxt & ChrW(&H1EB9) & Right(sText, Len(sText) - i)
  486.                         Case "E" sText = sPreTxt & UCase(ChrW(&H1EB9)) & Right(sText, Len(sText) - i)
  487.                         Case "u" sText = sPreTxt & ChrW(&H1EE5) & Right(sText, Len(sText) - i)
  488.                         Case "U" sText = sPreTxt & UCase(ChrW(&H1EE5)) & Right(sText, Len(sText) - i)
  489.                         Case "i" sText = sPreTxt & ChrW(&H1ECB) & Right(sText, Len(sText) - i)
  490.                         Case "I" sText = sPreTxt & UCase(ChrW(&H1ECB)) & Right(sText, Len(sText) - i)
  491.                         Case "y" sText = sPreTxt & ChrW(&H1EF5) & Right(sText, Len(sText) - i)
  492.                         Case "Y" sText = sPreTxt & UCase(ChrW(&H1EF5)) & Right(sText, Len(sText) - i)
  493.                        
  494.                         Case "ô" sText = sPreTxt & ChrW(&H1ED1 + 8) & Right(sText, Len(sText) - i)
  495.                         Case UCase("ô") sText = sPreTxt & UCase(ChrW(&H1ED1 + 8)) & Right(sText, Len(sText) - i)
  496.                         Case ChrW(&H1A1) sText = sPreTxt & ChrW(&H1EDB + 8) & Right(sText, Len(sText) - i)
  497.                         Case UCase(ChrW(&H1A1)) sText = sPreTxt & UCase(ChrW(&H1EDB + 8)) & Right(sText, Len(sText) - i)
  498.                         Case "â" sText = sPreTxt & ChrW(&H1EA5 + 8) & Right(sText, Len(sText) - i)
  499.                         Case UCase("â") sText = sPreTxt & UCase(ChrW(&H1EA5 + 8)) & Right(sText, Len(sText) - i)
  500.                         Case ChrW(&H103) sText = sPreTxt & ChrW(&H1EAF + 8) & Right(sText, Len(sText) - i)
  501.                         Case UCase(ChrW(&H103)) sText = sPreTxt & UCase(ChrW(&H1EAF + 8)) & Right(sText, Len(sText) - i)
  502.                         Case "ê" sText = sPreTxt & ChrW(&H1EBF + 8) & Right(sText, Len(sText) - i)
  503.                         Case UCase("ê") sText = sPreTxt & UCase(ChrW(&H1EBF + 8)) & Right(sText, Len(sText) - i)
  504.                         Case ChrW(&H1B0) sText = sPreTxt & ChrW(&H1EE9 + 8) & Right(sText, Len(sText) - i)
  505.                         Case UCase(ChrW(&H1B0)) sText = sPreTxt & UCase(ChrW(&H1EE9 + 8)) & Right(sText, Len(sText) - i)
  506.                     End Select
  507.  
  508.             End Select
  509.            
  510.         Next i
  511.     Next j
  512.     ToUniByTelex = sText
  513. End Function
  514.  
  515. Public Function ToUni(ByVal sText As String, Optional Spec_Char As String = "*", Optional Auto_VNI_TEX_012 As Byte = 0) As String
  516. Dim cA() As String, j As Long, nText As String
  517. cA = Split(Replace(sText, "\enter", Chr(13) & Chr(10), 1, Len(sText), 0), Spec_Char)
  518.  
  519. For j = 1 To UBound(cA) Step 2
  520.     Select Case Auto_VNI_TEX_012
  521.     Case 0
  522.         cA(j) = ToUniByVNI(ToUniByTelex(cA(j)))
  523.     Case 1
  524.         cA(j) = ToUniByVNI(cA(j))
  525.     Case 2
  526.         cA(j) = ToUniByTelex(cA(j))
  527.     End Select
  528. Next
  529.  
  530. For j = 0 To UBound(cA)
  531.     nText = nText & cA(j)
  532. Next
  533.  
  534. ToUni = nText
  535. End Function
  536.  
  537. Public Sub ToUniObj(ByVal Obj As Object)
  538.     On Error Resume Next
  539.     If Obj.Text <> "" Then
  540.         Obj.Text = ToUni(Obj.Text)
  541.     Else
  542.         Obj.Caption = ToUni(Obj.Caption)
  543.     End If
  544. End Sub

Download:
download/file.php?id=1594
Hình đại diện của thành viên
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1260
Ngày tham gia: Thứ 5 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Tiếp xúc:

Re: Tổng hợp Unicode trong VB6

Gửi bài by VuVanHoanh »

:D Thế thì không thể thiếu Control Unicode :D
Since 2008...
One love! :x
baohiep
Thành viên danh dự
Thành viên danh dự
Bài viết: 109
Ngày tham gia: Chủ nhật 27/12/2009 6:37 pm
Đến từ: Tam Kỳ
Has thanked: 3 times
Been thanked: 9 times

Re: Tổng hợp Unicode trong VB6

Gửi bài by baohiep »

Thêm mấy bài đây:
viewtopic.php?t=20638
viewtopic.php?t=20607
viewtopic.php?t=20631
Control:
Vào bài hướng dẫn tạo Control của anh Hưng. Trong đó có hướng dẫn tạo UniControl đó.
viewtopic.php?f=22&t=196
Hay cái iVB UnicodeControls v2.0 của iVB Group:
viewtopic.php?f=36&t=307
baohiep
Thành viên danh dự
Thành viên danh dự
Bài viết: 109
Ngày tham gia: Chủ nhật 27/12/2009 6:37 pm
Đến từ: Tam Kỳ
Has thanked: 3 times
Been thanked: 9 times

Re: Tổng hợp Unicode trong VB6

Gửi bài by baohiep »

UniMsgBox:
  1. Option Explicit
  2.  
  3. Public hDlgHook As Long
  4.  
  5. Private Const FONT_FACE = "Tahoma"
  6.  
  7. Public Const WH_CBT = 5
  8. Private Const HCBT_ACTIVATE = 5
  9. Private Const WM_SETFONT = &H30
  10. Private Const MB_TASKMODAL = &H2000&
  11.  
  12. Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal h As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal i As Long, ByVal U As Long, ByVal s As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
  13. Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal ParenthWnd As Long, ByVal ChildhWnd As Long, ByVal ClassName As String, ByVal Caption As String) As Long
  14. Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hMod As Long, ByVal dwThreadId As Long) As Long
  15. Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  16. Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  17. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  18. Declare Function GetCurrentThreadId Lib "kernel32" () As Long
  19. Declare Function SetWindowTextW Lib "user32" (ByVal hwnd As Long, ByVal lpString As Long) As Long
  20. Declare Function MessageBoxW Lib "user32.dll" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal uType As Long) As Long
  21.  
  22. Public Function UniMsgBox(strText As String, Optional iButtons As VbMsgBoxStyle = vbOKOnly, Optional strTitle As String, Optional hwnd As Long = &H0) As VbMsgBoxResult
  23.     Dim sTam1 As String, sTam2 As String
  24.    
  25.         sTam1 = ToUnicode(strText)
  26.         sTam2 = ToUnicode(strTitle)
  27.        
  28.         hDlgHook = SetWindowsHookEx(WH_CBT, AddressOf HookProc, App.hInstance, GetCurrentThreadId())
  29.         UniMsgBox = MessageBoxW(hwnd, StrPtr(sTam1), StrPtr(sTam2), iButtons Or MB_TASKMODAL)
  30. End Function
  31.  
  32. Private Function HookProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  33.     Dim hStatic1 As Long, hStatic2 As Long, hButton As Long, hFont As Long
  34.     HookProc = CallNextHookEx(hDlgHook, ncode, wParam, lParam)
  35.     If ncode = HCBT_ACTIVATE Then
  36.         hFont = CreateFont(13, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, FONT_FACE)
  37.    
  38.         hStatic1 = FindWindowEx(wParam, 0&, "Static", vbNullString)
  39.         hStatic2 = FindWindowEx(wParam, hStatic1, "Static", vbNullString)
  40.         If hStatic2 = 0 Then hStatic2 = hStatic1
  41.         SendMessage hStatic2, WM_SETFONT, hFont, ByVal 1&
  42.  
  43.         hButton = FindWindowEx(wParam, 0&, "Button", "OK")
  44.         SendMessage hButton, WM_SETFONT, hFont, 0
  45.         SetWindowTextW hButton, StrPtr(ToUnicode("D9o62&ng Y1"))
  46.          
  47.         hButton = FindWindowEx(wParam, 0&, "Button", "&Yes")
  48.         SendMessage hButton, WM_SETFONT, hFont, 0
  49.         SetWindowTextW hButton, StrPtr(ToUnicode("&Co1"))
  50.    
  51.         hButton = FindWindowEx(wParam, 0&, "Button", "&No")
  52.         SendMessage hButton, WM_SETFONT, hFont, 0
  53.         SetWindowTextW hButton, StrPtr(ToUnicode("&Kho6ng"))
  54.    
  55.         hButton = FindWindowEx(wParam, 0&, "Button", "Cancel")
  56.         SendMessage hButton, WM_SETFONT, hFont, 0
  57.         SetWindowTextW hButton, StrPtr(ToUnicode("&Tho6i"))
  58.    
  59.         hButton = FindWindowEx(wParam, 0&, "Button", "&Retry")
  60.         SendMessage hButton, WM_SETFONT, hFont, 0
  61.         SetWindowTextW hButton, StrPtr(ToUnicode("&Thu73 la5i"))
  62.    
  63.         hButton = FindWindowEx(wParam, 0&, "Button", "&Ignore")
  64.         SendMessage hButton, WM_SETFONT, hFont, 0
  65.         SetWindowTextW hButton, StrPtr(ToUnicode("&Tho6i")) 'Bo3 qua"))
  66.        
  67.         hButton = FindWindowEx(wParam, 0&, "Button", "&Abort")
  68.         SendMessage hButton, WM_SETFONT, hFont, 0
  69.         SetWindowTextW hButton, StrPtr(ToUnicode("&Xua61t ra *.txt")) '&Hu3y bo3"))
  70.  
  71.         hButton = FindWindowEx(wParam, 0&, "Button", "Help")
  72.         SendMessage hButton, WM_SETFONT, hFont, 0
  73.         SetWindowTextW hButton, StrPtr(ToUnicode("Giu1p d9o74"))
  74.        
  75.         UnhookWindowsHookEx hDlgHook
  76.     End If
  77. End Function

Thêm code vào một Module.

Trong Form, khi nào dùng thì gọi hàm UniMsgBox (Gõ kiểu VNI).
dongdo1234
Thành viên chính thức
Thành viên chính thức
Bài viết: 19
Ngày tham gia: Thứ 6 18/01/2013 8:56 am
Đến từ: Giao Thủy - Nam Định
Has thanked: 9 times
Been thanked: 1 time
Tiếp xúc:

Re: Tổng hợp Unicode trong VB6

Gửi bài by dongdo1234 »

Ae cho hoi mấy cái Funtion trên dùng thế nào vậy
ToUniByVNI ; UniMsgBox; ToUniByTelex ...
>> Mình đã add module nhưng gọi hàm không thấy kết quả
Hình đại diện của thành viên
tungblt
Điều hành viên
Điều hành viên
Bài viết: 550
Ngày tham gia: Thứ 2 22/12/2008 5:22 pm
Đến từ: quy nhơn
Has thanked: 9 times
Been thanked: 74 times
Tiếp xúc:

Re: Tổng hợp Unicode trong VB6

Gửi bài by tungblt »

Label1.Caption = TounibyVni ("ca6u la5c bo65 VB")
UniMsgBox "nội dung thông báo","Tiêu đề thông báo"
Label1.Caption = ToUniByTelex ("caau lajc booj VB")
love
Đăng trả lời

Quay về