Article View: free.it.visual-basic
Article #156Errore fatale con messaggio LVM_SETITEMSTATE su SysListView32
From: Emilio
Date: Mon, 17 Mar 2008 21:12
Date: Mon, 17 Mar 2008 21:12
85 lines
3518 bytes
3518 bytes
Buonasera,
sto scrivendo un programma in Visual Basic 6 per controllarne un altro
scritto in Visual C++.
Il programma da controllare รจ composto da quattro oggetti di tipo
SysListView32.
Con il codice seguente posso recuperare gli handle dei quattro
controlli e su questi posso effettuare operazioni di aggiunta e
rimozione elementi. L'unico messaggio che non mi funziona รจ quello per
selzionare uno o tutti gli elementi della SysListView.
Infatti quando mando questo messaggio ricevo un errore fatale
dell'applicazione in Visual C++ con riferimento al file COMCTL32.OCX.
Ecco il codice:
Type LVITEM
mask As Long
iItem As Long
iSubItem As Long
state As Long
stateMask As Long
pszText As Long
cchTextMax As Long
iImage As Long
lParam As Long
iIndent As Long
End Type
Private Const LVM_FIRST = &H1000 '// Costanti messaggi per listview
Private Const LVM_SETITEMSTATE = (LVM_FIRST + 43)
Private Const LVIS_SELECTED = &H2
Private Const LVIF_STATE = &H8
Public hSysListView32(3) As Long 'handle delle varie SysListView32
Public SysListAttrib(3) As LVITEM
Sub TestButton()
hFound = FindWindowEx(0, 0, vbNullString, "Visual C++ Program")
If hFound > 0 Then
result = EnumChildWindows(hFound, AddressOf EnumChildProc,
ByVal 0&)
End If
End Sub
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As
Long) As Long
Dim sClass As String
Dim ret&
Dim totalItem As Integer
Static i As Integer
sClass = Space$(64)
ret = GetClassName(hwnd, sClass, 64)
If InStr(Left(sClass, ret), "SysListView32") Then
hSysListView32(i) = hwnd
i = i + 1
End If
EnumChildProc = 1
End Function
Sub Select() 'richiamata da un pulsante della form
Dim x
For x = 0 To 3
SysListAttrib(x).mask = LVIF_STATE
SysListAttrib(x).state = True
SysListAttrib(x).stateMask = LVIS_SELECTED
Call SendMessage(hSysListView32(x), LVM_SETITEMSTATE, -1,
SysListAttrib(x))
Call UpdateWindow(hSysListView32(x))
Next x
End Sub
Cosa ne pensate di questo comportamento? In pratica mi funziona tutto
tranne l'unico messaggio che veramente mi serve! :-)
Grazie, Emilio.
Technical Details
Message-ID:
<8599b475-a6a1-4cad-855b-26a510ff8f91@c19g2000prf.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!postnews.google.com!c19g2000prf.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: f94ee,387bca264eed8524,start X-Google-Attributes: gidf94ee,public,usenet X-Google-Language: ITALIAN,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!postnews.google.com!c19g2000prf.googlegroups.com!not-for-mail From: Emilio <emilio.dedominicis@gmail.com> Newsgroups: free.it.visual-basic Subject: Errore fatale con messaggio LVM_SETITEMSTATE su SysListView32 Date: Mon, 17 Mar 2008 14:12:09 -0700 (PDT) Organization: http://groups.google.com Lines: 85 Message-ID: <8599b475-a6a1-4cad-855b-26a510ff8f91@c19g2000prf.googlegroups.com> NNTP-Posting-Host: 87.7.104.111 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1205788330 11804 127.0.0.1 (17 Mar 2008 21:12:10 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 17 Mar 2008 21:12:10 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: c19g2000prf.googlegroups.com; posting-host=87.7.104.111; posting-account=WXMPEgoAAABrdwCQ6knaP7RA189fAD_e User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12,gzip(gfe),gzip(gfe)