nguyendangkhoi
Thành viên chính thức
- Tham gia
- 18/2/09
- Bài viết
- 59
- Được thích
- 5
Em có lang thang trên mạng thì có gặp một bài cọđaon code nói về LV unicode mà em không hiểu và thấy nó cũng không chạy được, hôm nay em đưa lên thử để mọi người tham khảo xem có cách nào chạy được nó không ?
PHP:
Private Const WM_SETTEXT = &HC
Private Const GWL_WNDPROC = (-4)
Public Const LVM_SETITEMTEXT = (&H1000 + 116)
PHP:
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcW" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _
ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcW" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongW" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public PrevProc As Long
PHP:
Public Function WindowProc(ByVal hwnd As Long, _
ByVal uMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
On Error Resume Next
Dim sTemp As String
If uMsg = LVM_SETITEMTEXT Then
sTemp = StrConv("Subclassing" & Chr(0), vbFromUnicode)
lParam = StrPtr(sTemp)
WindowProc = DefWindowProc(hwnd, uMsg, 0, lParam)
Else
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
End If
End Function
PHP:
Public Sub initForm()
On Error Resume Next
Dim i As Integer
PrevProc = SetWindowLong(Form.lsv.hwnd, WM_SETTEXT, AddressOf WindowProc)
Form.lsv.View = lvwReport
With Form.lsv.ColumnHeaders
.Clear
.Add 1, , ChrW(&H95C9)
End With
Form.lsv.ListItems.Clear
For i = 1 To 5
unicodechar = ChrW(&H9000)
With Form.lsv
.ListItems.Add i, , unicodechar
.ListItems(i).SubItems(2) = unicodechar
End With
Next
End Sub
PHP:
Public Sub SubclassForm(L As ListView)
PrevProc = SetWindowLong(L.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
PHP:
Public Sub UnSubclassForm(L As ListView)
SetWindowLong L.hwnd, GWL_WNDPROC, PrevProc
End Sub
PHP:
Private Sub UserForm_Terminate()
UnSubclassForm lsv
End Sub
Chỉnh sửa lần cuối bởi điều hành viên: