如何固定listview中列的宽度??
ListView1.View = lvwReport
ListView1.View = lvwReport
解决方案 »
- vb调用oracle存储过程
- SetupFactory打包VB程序的时候,怎么把Crystal Reports 9的东西打进去啊?
- 在VB中如何使用SQLServer的系统函数
- vb实现记录拷贝?
- 请高手指点:VB6.0报表中的数据和ADO里的RecordSet中的数据分别如何导出至Excel文件
- 请问VB是否有栯圆或其它的美术按钮控件?难道VB没这个功能吗?
- VB里WinSock的问题
- 怎么才能将SQL查询的结果用DATA控件在DBGRID32控件中显示出来!
- 急!那有WIN97,WIN95下载啊!
- 关于VB6 开发数据库连接:
- 在一个程序中比如文本框有很多查询条件的实现方法?
- 如何通过AT指令控制Modem播放语音文件
ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Add , "名称", "名称", 1400
ListView1.ColumnHeaders.Add , "大小", "大小", 600
ListView1.ColumnHeaders.Add , "属性", "属性", 1200
ListView1.ColumnHeaders.Add , "日期", "日期", 1200
Set FF = ListView1.ListItems.Add(, , "File1.txt")
FF.SubItems(1) = "600 KB"
FF.SubItems(2) = "只度"
FF.SubItems(3) = "2005-02-23"
'改变列宽度
ListView1.ColumnHeaders.Item("大小").Width = 1400
看看 大小 的宽度是不是比原来大了
Case WM_SETCURSOR,WM_LBUTTONDBLCLK,WM_NCHITTEST
If Not AllowResizeColumns(lvResults) Then Exit Sub
End Select
ownWndProc= CallWindowProc(Msg, wParam, lParam)
End Sub
Case WM_SETCURSOR,WM_LBUTTONDBLCLK,WM_NCHITTEST
If Not AllowResizeColumns(lvResults) Then Exit Sub
End Select
ownWndProc= CallWindowProc(Msg, wParam, lParam)
End Sub
Private Sub Form_Load()
Dim li As ListItem
Dim lCount As Long
With ListView1.ListItems
For lCount = 1 To 100
Set li = .Add(, , lCount)
li.SubItems(1) = lCount
li.SubItems(2) = lCount
Next
End With
glLVDefWindowProc = SetWindowLong(ListView1.hwnd, GWL_WNDPROC, AddressOf LVWindowProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
If glLVDefWindowProc Then
'结束子类处理
SetWindowLong ListView1.hwnd, GWL_WNDPROC, glLVDefWindowProc
glLVDefWindowProc = 0
End IfEnd Sub
-----basMain代码--------------------
Option Explicit
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 SetClassLong Lib "user32" Alias "SetClassLongA" (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 uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = (-4)Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)Public Type NMHDR
hwndFrom As Long ' Window handle of control sending message
idFrom As Long ' Identifier of control sending message
code As Long ' Specifies the notification code
End TypePublic Type NMHEADER
hdr As NMHDR
iItem As Long
iButton As Long
pitem As Long
End TypePublic Const WM_NOTIFY& = &H4EPublic Const HDN_FIRST = -300&
Public Const HDN_LAST = -399&Public Const HDN_ITEMCHANGINGA As Long = HDN_FIRST - 0
Public Const HDN_ITEMCHANGINGW As Long = HDN_FIRST - 20
Public Const HDN_ITEMCHANGEDA As Long = HDN_FIRST - 1
Public Const HDN_ITEMCHANGEDW As Long = HDN_FIRST - 21
Public Const HDN_ITEMCLICKA As Long = HDN_FIRST - 2
Public Const HDN_ITEMCLICKW As Long = HDN_FIRST - 22
Public Const HDN_ITEMDBLCLICKA As Long = HDN_FIRST - 3
Public Const HDN_ITEMDBLCLICKW As Long = HDN_FIRST - 23
Public Const HDN_DIVIDERDBLCLICKA As Long = HDN_FIRST - 5
Public Const HDN_DIVIDERDBLCLICKW As Long = HDN_FIRST - 25
Public Const HDN_BEGINTRACKA As Long = HDN_FIRST - 6
Public Const HDN_BEGINTRACKW As Long = HDN_FIRST - 26
Public Const HDN_ENDTRACKA As Long = HDN_FIRST - 7
Public Const HDN_ENDTRACKW As Long = HDN_FIRST - 27
Public Const HDN_TRACKA As Long = HDN_FIRST - 8
Public Const HDN_TRACKW As Long = HDN_FIRST - 28
Public Const HDN_GETDISPINFOA As Long = HDN_FIRST - 9
Public Const HDN_GETDISPINFOW As Long = HDN_FIRST - 29
Public Const HDN_BEGINDRAG As Long = HDN_FIRST - 10
Public Const HDN_ENDDRAG As Long = HDN_FIRST - 11
Public Const HDN_FILTERCHANGE As Long = HDN_FIRST - 12
Public Const HDN_FILTERBTNCLICK As Long = HDN_FIRST - 13Public glLVDefWindowProc As LongPublic Function LVWindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_NOTIFY
Dim tHD As NMHDR
CopyMemory tHD, ByVal lParam, Len(tHD)
Select Case tHD.code
Case HDN_BEGINTRACKA, HDN_DIVIDERDBLCLICKA, HDN_BEGINDRAG, HDN_TRACKA
Debug.Print "1"
LVWindowProc = 1
Exit Function
End Select
End Select
LVWindowProc = CallWindowProc(glLVDefWindowProc, hwnd, uMsg, wParam, lParam)
End Function
里面可以固定,也可以调整,界面灵活,毕竟是自己画的,呵呵。不过用回调函数信息拦截的方法因该可以,毕竟Windows可以说是一个信
息的系统,所有的事件都是用信息拦截响应出来的,只是具体的信息参数
问题罢了。
其实没必要用子类
TreeView用的是Header控制
改变Header控制的窗口风格就行了(去掉HDS_BUTTONS)dim hWnd as long
dim lstyle as longhWnd = SendMessage(ListView1.hWnd, LVM_GETHEADER, 0, byval 0&)lstyle = GetWindowLong(hWnd, GWL_STYLE)
lstyle = lstyle and not HDS_BUTTONS
call SetWindowLong(hWnd, GWL_STYLE, lstyle)
看错了既然不想改变列框
那么干脆不要Header算了dim hWnd as long
dim lstyle as longhWnd = ListView1.hWndlstyle = GetWindowLong(hWnd, GWL_STYLE)
lstyle = lstyle or LVS_NOCOLUMNHEADER
call SetWindowLong(hWnd, GWL_STYLE, lstyle)