求助 listview 列表视图 列宽修改。[已解决]
本帖最后由 DenQ 于 2012-6-26 16:33 编辑在写一个listview里显示机器状态的程序,但苦与不知道怎么修改列表视图列宽,排版太稀疏了。。
AU3写计费系统,太强大了,支持一下。 _GUICtrlListView_SetColumnWidth _GUICtrlListView_SetColumnWidth
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
$Debug_LV = False ; 检查传递给 ListView 函数的类名, 设置为True并输出到一个控件的句柄,用于检查它是否工作
_Main()
Func _Main()
Local $hListView
GUICreate("ListView Set Column Width", 400, 300)
$hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3|Column 4", 2, 2, 394, 268)
GUISetState()
; Change column 1 width
MsgBox(4160, "信息", "Column 1 Width: " & _GUICtrlListView_GetColumnWidth($hListView, 0))
_GUICtrlListView_SetColumnWidth($hListView, 0, 150)
MsgBox(4160, "信息", "Column 1 Width: " & _GUICtrlListView_GetColumnWidth($hListView, 0))
; 循环直到用户退出
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
回复 3# ashfinal
不行不知道 为什么 修改不了。。 回复ashfinal
不行不知道 为什么 修改不了。。
DenQ 发表于 2012-6-25 20:24 http://www.autoitx.com/images/common/back.gif
不把你的源码帖出来,我们也是“不知道”,也真的不知道为什么 回复 4# aimer1124
谢了 不过这是列表模式。 改不了貌似。。 #include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
$Gui = GUICreate("Test by-3mile", 800, 600, Default, Default)
$listview = _GUICtrlListView_Create($Gui, "a", 2, 2, 798, 598, BitOR($LVS_NOCOLUMNHEADER, $LVS_ICON, $LVS_SINGLESEL), -1, True)
$iTotalNumber = DllCall("Shell32.dll", "long", "ExtractIcon", "ptr", 0, "str", "Shell32.dll", "int", -1)
$Image = _GUIImageList_Create(16, 16, 5, 1);通常我是用这里来调整图标多少的
For $i = 1 To $iTotalNumber
__GUIImageList_AddIcon($Image, "c:\WINDOWS\system32\shell32.dll", $i)
_GUICtrlListView_SetImageList($listview, $Image, 0)
_GUICtrlListView_AddItem($listview, "第" & $i & "个", $i - 1)
Next
_GUICtrlListView_SetBkImage($listview, @ScriptDir & "\BkgPic.jpg", 1)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While GUIGetMsg() + 3
WEnd
Func __Icons_Icon_Extract($sIcon, $iIndex, $iWidth, $iHeight)
Local $Ret = DllCall('shell32.dll', 'int', 'SHExtractIconsW', 'wstr', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr*', 0, 'ptr*', 0, 'int', 1, 'int', 0)
If (@error) Or ($Ret = 0) Then
Return SetError(1, 0, 0)
EndIf
Return $Ret
EndFunc ;==>__Icons_Icon_Extract
Func __GUIImageList_AddIcon($hWnd, $sFile, $iIndex = 0)
Local $iRet
$iRet = __Icons_Icon_Extract($sFile, $iIndex, _GUIImageList_GetIconWidth($hWnd), _GUIImageList_GetIconHeight($hWnd))
If $iRet <= 0 Then Return SetError(-1, $iRet, 0)
Local $hIcon = $iRet
$iRet = _GUIImageList_ReplaceIcon($hWnd, -1, $hIcon)
_WinAPI_DestroyIcon($hIcon)
If $iRet = -1 Then Return SetError(-2, $iRet, 0)
Return $iRet
EndFunc ;==>__GUIImageList_AddIcon
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $Menu
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $listview
Switch $iCode
Case $NM_DBLCLK
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
$Index = DllStructGetData($tInfo, "SubItem")
If $Index > -1 Then
$L_Name = _GUICtrlListView_GetItemText($hWndFrom, $Index)
MsgBox(4096, "响应双击", "你选择的是" & $L_Name)
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
好东西,支持 回复 5# DenQ
能是用了皮肤的关系 回复 8# 3mile
谢了, {:face (356):} 不错{:face (303):} 强大~~~~~~~~~ 看看你这是怎么实现的.... 有点难度.至少我自己写不出来.
页:
[1]
2