Took a little while, but figured it out.
You can do it by subclassing the Listview and intercepting the
HDN_BEGINTRACK Header Notification Message.
In this example, I've set it up so that any column with a width of 0 (Zero) is deemed not sizable.

In a Standard Module:
VB Code:
  1. Option Explicit
  2.  
  3. ' GetWindowsLong Constants
  4. Private Const GWL_WNDPROC = (-4)
  5.  
  6. ' Windows Message Constants
  7. Private Const WM_NOTIFY = &H4E
  8. Private Const WM_DESTROY = &H2
  9.  
  10. ' Column Header Notification Meassage Constants
  11. Private Const HDN_FIRST = -300&
  12. Private Const HDN_BEGINTRACK = (HDN_FIRST - 6)
  13.  
  14. ' Column Header Item Info Message Constants
  15. Private Const HDI_WIDTH = &H1
  16.  
  17. ' Notify Message Header Type
  18. Private Type NMHDR
  19.    hWndFrom As Long
  20.    idFrom As Long
  21.    code As Long
  22. End Type
  23.  
  24. ' Notify Message Header for Listview
  25. Private Type NMHEADER
  26.      hdr As NMHDR
  27.      iItem As Long
  28.      iButton As Long
  29.      lPtrHDItem As Long ' HDITEM FAR* pItem
  30. End Type
  31.  
  32. ' Header Item Type
  33. Private Type HDITEM
  34.     mask As Long
  35.     cxy As Long
  36.     pszText As Long
  37.     hbm As Long
  38.     cchTextMax As Long
  39.     fmt As Long
  40.     lParam As Long
  41.     iImage As Long
  42.     iOrder As Long
  43. End Type
  44.  
  45. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  46. Private 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
  47. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  48.  
  49. Private mlPrevWndProc As Long
  50.  
  51. Private Function WindowProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  52.     Dim tNMH As NMHDR
  53.     Dim tNMHEADER As NMHEADER
  54.     Dim tITEM As HDITEM
  55.    
  56.     Select Case Msg
  57.     Case WM_NOTIFY
  58.         ' Copy the Notify Message Header to a Header Structure
  59.         CopyMemory tNMH, ByVal lParam, Len(tNMH)
  60.        
  61.         Select Case tNMH.code
  62.         Case HDN_BEGINTRACK
  63.             ' If the user is trying to Size a Column Header...
  64.            
  65.             ' Extract Information about the Header being Sized
  66.             CopyMemory tNMHEADER, ByVal lParam, Len(tNMHEADER)
  67.            
  68.             ' Get Item Info. about the header (i.e. Width)
  69.             CopyMemory tITEM, ByVal tNMHEADER.lPtrHDItem, Len(tITEM)
  70.            
  71.             ' Don't allow Zero Width Columns to be Sized.
  72.             If (tITEM.mask And HDI_WIDTH) = HDI_WIDTH And tITEM.cxy = 0 Then
  73.                 WindowProc = 1
  74.                 Exit Function
  75.             End If
  76.         End Select
  77.        
  78.     Case WM_DESTROY
  79.         ' Remove Subclassing when Listview is Destroyed (Form unloaded.)
  80.         WindowProc = CallWindowProc(mlPrevWndProc, hWnd, Msg, wParam, lParam)
  81.         Call SetWindowLong(hWnd, GWL_WNDPROC, mlPrevWndProc)
  82.         Exit Function
  83.          
  84.     End Select
  85.  
  86.     ' Call Default Window Handler
  87.     WindowProc = CallWindowProc(mlPrevWndProc, hWnd, Msg, wParam, lParam)
  88. End Function
  89.  
  90. Public Sub SubClassHwnd(ByVal hWnd As Long)
  91.     mlPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
  92. End Sub
In Form with ListView:
VB Code:
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.     Dim lIndex As Long
  5.    
  6.     SubClassHwnd ListView1.hWnd
  7.    
  8.     With ListView1
  9.         .View = lvwReport
  10.         For lIndex = 1 To 5
  11.             .ColumnHeaders.Add , "COL" & lIndex, "Column " & lIndex, IIf(lIndex = 3, 0, (.Width - 200) / 4)
  12.         Next
  13.     End With
  14.  
  15. End Sub