Però poi ti consente di ridimensionarla (ne sai qualcosa LadyBlu
). Se vuoi nasconderla sul serio devi usare il subclassing in modo da intercettare il resize di una colonna e annullarlo.
nel form initialize
codice:
'SubClassing per resize
hPrecedente = SetWindowLong(ListView.hwnd, GWL_WNDPROC, AddressOf IntercettaMsg)
in un modulo a parte
codice:
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Const HDN_FIRST = -300
Public Const GWL_WNDPROC = (-4&)
Private Const HDN_BEGINTRACKA = (HDN_FIRST - 6)
' Header / Notification Structures
Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type
Private Type NMHEADER
hdr As NMHDR
iItem As Integer
iButton As Integer
pitem As Long
End Type
Public hPrecedente As Long
Public Function IntercettaMsg(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim hNot As NMHEADER
CopyMemory hNot, ByVal lParam, Len(hNot)
Select Case hNot.hdr.code 'lParam
Case HDN_BEGINTRACKA:
If hNot.iItem = 1 Then 'qui metti le condizioni per gli indici delle colonne nascoste
Debug.Print hNot.iItem
IntercettaMsg = hPrecedente
Exit Function
End If
End Select
IntercettaMsg = CallWindowProc(hPrecedente, hwnd, Msg, wParam, lParam)
End Function