⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdl_unicode.bas

📁 Japanese-Vietnamese Dictionary - Jack Nguyen
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "mdl_Unicode"
Option Explicit

Public Const MIIM_DATA& = &H20

Public Const MIIM_TYPE& = &H10

Public Type MENUITEMINFO
    cbSize As Long
    fMask As Long
    fType As Long
    fState As Long
    wID As Long
    hSubMenu As Long
    hbmpChecked As Long
    hbmpUnchecked As Long
    dwItemData As Long
    dwTypeData As String
    cch As Long
End Type

Public Declare Function MessageBox _
               Lib "user32.dll" _
               Alias "MessageBoxW" (ByVal hWnd As Long, _
                                    ByVal lpText As Long, _
                                    ByVal lpCaption As Long, _
                                    ByVal wType As Long) As Long

Public Declare Function GetSubMenu _
               Lib "user32" (ByVal hMenu As Long, _
                             ByVal nPos As Long) As Long

Public Declare Function GetMenu _
               Lib "user32" (ByVal hWnd As Long) As Long

Public Declare Function GetMenuItemCount _
               Lib "user32" (ByVal hMenu As Long) As Long

Public Declare Function GetMenuItemInfo _
               Lib "user32" _
               Alias "GetMenuItemInfoW" (ByVal hMenu As Long, _
                                         ByVal un As Long, _
                                         ByVal b As Long, _
                                         lpMenuItemInfo As MENUITEMINFO) As Long

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

Public Sub VietHoaMenu(frm As Form)
    Dim hMenu&
    hMenu = GetMenu(frm.hWnd)
    VietnameseMenu hMenu
End Sub

Public Function IsUnicode(s As String) As Boolean
   Dim i As Long
   Dim bLen As Long
   Dim Map() As Byte

   If LenB(s) Then
      Map = s
      bLen = UBound(Map)
      For i = 1 To bLen Step 2
         If (Map(i) > 0) Then
            IsUnicode = True
            Exit Function
         End If
      Next
   End If
End Function
   
Public Sub VietnameseMenu(ByVal hMenu As Long)
    Dim hSubMenu&, i%, nCnt%, sTmp$
    Dim MII As MENUITEMINFO
    
    nCnt = GetMenuItemCount(hMenu)

    If nCnt Then

        For i = 0 To nCnt - 1
            MII.cbSize = LenB(MII)
            MII.fMask = MIIM_TYPE Or MIIM_DATA
            MII.dwTypeData = String(&HFF, 0)
            MII.cch = Len(MII.dwTypeData)
            '           MII.hbmpChecked = MF_CHECKED Or MF_UNCHECKED
            
            'lay chuoi ten cua Menu
            GetMenuItemInfo hMenu, i, True, MII
            MII.dwTypeData = StrConv(MII.dwTypeData, vbFromUnicode)
            sTmp = Left$(MII.dwTypeData, MII.cch)
            
            'Viet lai chuoi ten cua Menu va chuyen no sang Unicode
    
            If Not IsUnicode(sTmp) Then sTmp = VniStrToUni(sTmp)
            
            sTmp = StrConv(sTmp, vbUnicode)              'note
            MII.dwTypeData = sTmp
            SetMenuItemInfo hMenu, i, True, MII
            
            'lay Menu con cua mot MenuItem
            hSubMenu = GetSubMenu(hMenu, i)

            If hSubMenu Then
                VietnameseMenu hSubMenu
            End If

        Next

    End If

End Sub

Public Function VniStrToUni(sVniStr As String)
    Dim i As Integer, j As Integer
    Dim sCurChar As String, sPreChar As String, sPreText As String

    For j = 1 To 2
        For i = 2 To Len(sVniStr)
            sCurChar = Mid$(sVniStr, i, 1)
            sPreText = Left$(sVniStr, i - 2)
            sPreChar = Mid$(sVniStr, i - 1, 1)

            Select Case sCurChar

                Case "1"

                    Select Case sPreChar

                            'a
                        Case "a": sVniStr = sPreText & ChrW$(&HE1) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "A": sVniStr = sPreText & ChrW$(&HC1) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HE2): sVniStr = sPreText & ChrW$(&H1EA5) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HC2): sVniStr = sPreText & ChrW$(&H1EA4) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H103): sVniStr = sPreText & ChrW$(&H1EAF) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H102): sVniStr = sPreText & ChrW$(&H1EAE) & Right$(sVniStr, Len(sVniStr) - i)

                            'e
                        Case "e": sVniStr = sPreText & ChrW$(&HE9) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "E": sVniStr = sPreText & ChrW$(&HC9) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HEA): sVniStr = sPreText & ChrW$(&H1EBF) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HCA): sVniStr = sPreText & ChrW$(&H1EBE) & Right$(sVniStr, Len(sVniStr) - i)

                            'i
                        Case "i": sVniStr = sPreText & ChrW$(&HED) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "I": sVniStr = sPreText & ChrW$(&HCD) & Right$(sVniStr, Len(sVniStr) - i)

                            'o
                        Case "o": sVniStr = sPreText & ChrW$(&HF3) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "O": sVniStr = sPreText & ChrW$(&HD3) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HF4): sVniStr = sPreText & ChrW$(&H1ED1) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HD4): sVniStr = sPreText & ChrW$(&H1ED0) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1A1): sVniStr = sPreText & ChrW$(&H1EDB) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1A0): sVniStr = sPreText & ChrW$(&H1EDA) & Right$(sVniStr, Len(sVniStr) - i)

                            'u
                        Case "u": sVniStr = sPreText & ChrW$(&HFA) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "U": sVniStr = sPreText & ChrW$(&HDA) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1B0): sVniStr = sPreText & ChrW$(&H1EE9) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1AF): sVniStr = sPreText & ChrW$(&H1EE8) & Right$(sVniStr, Len(sVniStr) - i)

                            'y
                        Case "y": sVniStr = sPreText & ChrW$(&HFD) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "Y": sVniStr = sPreText & ChrW$(&HDD) & Right$(sVniStr, Len(sVniStr) - i)
                    End Select
                    
                Case "2"

                    Select Case sPreChar

                            'a
                        Case "a": sVniStr = sPreText & ChrW$(&HE0) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "A": sVniStr = sPreText & ChrW$(&HC0) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HE2): sVniStr = sPreText & ChrW$(&H1EA7) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HC2): sVniStr = sPreText & ChrW$(&H1EA6) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H103): sVniStr = sPreText & ChrW$(&H1EB1) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H102): sVniStr = sPreText & ChrW$(&H1EB0) & Right$(sVniStr, Len(sVniStr) - i)

                            'e
                        Case "e": sVniStr = sPreText & ChrW$(&HE8) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "E": sVniStr = sPreText & ChrW$(&HC8) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HEA): sVniStr = sPreText & ChrW$(&H1EC1) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HCA): sVniStr = sPreText & ChrW$(&H1EC0) & Right$(sVniStr, Len(sVniStr) - i)

                            'i
                        Case "i": sVniStr = sPreText & ChrW$(&HEC) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "I": sVniStr = sPreText & ChrW$(&HCC) & Right$(sVniStr, Len(sVniStr) - i)

                            'o
                        Case "o": sVniStr = sPreText & ChrW$(&HF2) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "O": sVniStr = sPreText & ChrW$(&HD2) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HF4): sVniStr = sPreText & ChrW$(&H1ED3) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&HD4): sVniStr = sPreText & ChrW$(&H1ED2) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1A1): sVniStr = sPreText & ChrW$(&H1EDD) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1A0): sVniStr = sPreText & ChrW$(&H1EDC) & Right$(sVniStr, Len(sVniStr) - i)

                            'u
                        Case "u": sVniStr = sPreText & ChrW$(&HF9) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "U": sVniStr = sPreText & ChrW$(&HD9) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1B0): sVniStr = sPreText & ChrW$(&H1EEB) & Right$(sVniStr, Len(sVniStr) - i)

                        Case ChrW$(&H1AF): sVniStr = sPreText & ChrW$(&H1EEA) & Right$(sVniStr, Len(sVniStr) - i)

                            'y
                        Case "y": sVniStr = sPreText & ChrW$(&H1EF3) & Right$(sVniStr, Len(sVniStr) - i)

                        Case "Y": sVniStr = sPreText & ChrW$(&H1EF2) & Right$(sVniStr, Len(sVniStr) - i)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -