2016-11-06 21 views
0

SysListView32からデータを取得しようとしていますが、LVM_GETITEMTEXTを使用していますが、空の文字列が表示されます。それは私に文字数を与えますが、実際のテキストは表示しません。誰でも助けてくれますか?SysListView32からデータを取得する

Private Const LVM_FIRST As Long = &H1000 
Private Const LVM_GETITEMTEXT As Long = (LVM_FIRST + 45) 

Private Type LV_ITEM 
    mask   As Long 
    iItem  As Long 
    iSubItem  As Long 
    state  As Long 
    stateMask As Long 
    pszText  As String 
    cchTextMax As Long 
    iImage  As Long 
    lParam  As Long 
    iIndent  As Long 
End Type 

Dim lvi As LV_ITEM 
Dim r as long 

lvi.cchTextMax = MAX_PATH 
lvi.pszText = Space$(MAX_PATH) 

r = SendMessage(Handle, LVM_GETITEMTEXT, 0, lvi) 

data = Left(lvi.pszText, r) 

If Trim(data) <> "" Then MsgBox (data) 

答えて

0

あなたneed to set the LVIF_TEXT flagが有効なバッファにそのpszTextポイントを宣言するために、次のようにコードです。

Private Const LVIF_TEXT As Long = &H1 
lvi.mask = LVIF_TEXT 
lvi.cchTextMax = MAX_PATH 
lvi.pszText = Space$(MAX_PATH) 
+0

そのためのおかげで、それでも無喜び、まだ空の文字列を取得します。 – Amir

+0

@Amir 'SendMessage'はどのように宣言され、' r'には何があり、listviewには[LVS_OWNERDATA]がありません(https://msdn.microsoft.com/en-us/library/windows/desktop/bb774739 (v = vs.85).aspx#LVS_OWNERDATA)スタイル? – GSerg

+0

プライベート宣言関数SendMessage Lib "user32"エイリアス "SendMessageA"(ByVal hWnd As Long、ByVal wParam As Long、lParam As Any)Longとして – Amir

関連する問題