其实按拼音顺序排序比较简单的!ListBox的排序并不是知道了每个汉字的拼音后才排序的。它排序根据的是汉字在字模表中的顺序。而字模表安排汉字就是按照拼音顺序来的!比如 gb2312。(注:特殊部分并没有按照拼音来排序的!)如果你需要使用程序来实现的话,也很简单。原理就是比较汉字的内码大小,小的排在前面!获得汉字内码的方法如下:Function GetHzCode(Hz As String, OSType As Boolean) As Long '在 DBCS 系统中,ostype=true,否则ostype=false Dim temp As String Dim b() As Byte
If Hz = "" Then Exit Function Else temp = Left$(Hz, 1) End If
If OSType = True Then GetHzCode = Asc(temp) If GetHzCode < 0 Then GetHzCode = 65536 + GetHzCode Else b = StrConv(temp, vbFromUnicode) GetHzCode = CLng(b(0)) * 256 + CLng(b(1)) End If End Function
gb2312。(注:特殊部分并没有按照拼音来排序的!)如果你需要使用程序来实现的话,也很简单。原理就是比较汉字的内码大小,小的排在前面!获得汉字内码的方法如下:Function GetHzCode(Hz As String, OSType As Boolean) As Long
'在 DBCS 系统中,ostype=true,否则ostype=false
Dim temp As String
Dim b() As Byte
If Hz = "" Then
Exit Function
Else
temp = Left$(Hz, 1)
End If
If OSType = True Then
GetHzCode = Asc(temp)
If GetHzCode < 0 Then GetHzCode = 65536 + GetHzCode
Else
b = StrConv(temp, vbFromUnicode)
GetHzCode = CLng(b(0)) * 256 + CLng(b(1))
End If
End Function