Jump to content
Bilgus

A few handy functions for easily seeing listview and window styles

Recommended Posts

Bilgus

Literally just a list of listview styles / extended styles and WS / WSEX styles prints them in the console by their name

;Debug
;Debug_GetLvMStyles($g_hListView)
;Debug_GetHDStyles($g_hListView)
;Debug_GetWSStyles($g_hListView)
;Debug_GetWSStyles($g_hWnd)



    ;;#include <ListViewConstants.au3>
    Func Debug_GetLvMStyles($hListView)
    Local $LVStyle = _WinAPI_GetWindowLong($hListView, -16)
    Local $LVExStyle = _GUICtrlListView_GetExtendedListViewStyle($hListView)
    Local $sLVSTYLES
    Local $sLVExSTYLES
    If @error Then
    ConsoleWrite(" Error Debug_GetLvMStyles Couldn't retrieve Styles")
    Return
    EndIf
    If BitAND($LVStyle, $LVS_ALIGNLEFT) Then $sLVSTYLES &= "$LVS_ALIGNLEFT, "
    If BitAND($LVStyle, $LVS_ALIGNMASK) Then $sLVSTYLES &= "$LVS_ALIGNMASK, "
    If BitAND($LVStyle, $LVS_ALIGNTOP) Then $sLVSTYLES &= "$LVS_ALIGNTOP, "
    If BitAND($LVStyle, $LVS_AUTOARRANGE) Then $sLVSTYLES &= "$LVS_AUTOARRANGE, "
    If BitAND($LVStyle, $LVS_DEFAULT) Then $sLVSTYLES &= "LVS_DEFAULT,"
    If BitAND($LVStyle, $LVS_EDITLABELS) Then $sLVSTYLES &= "LVS_EDITLABELS, "
    If BitAND($LVStyle, $LVS_ICON) Then $sLVSTYLES &= "LVS_ICON, "
    If BitAND($LVStyle, $LVS_LIST) Then $sLVSTYLES &= "LVS_LIST, "
    If BitAND($LVStyle, $LVS_NOCOLUMNHEADER) Then $sLVSTYLES &= "LVS_NOCOLUMNHEADER, "
    If BitAND($LVStyle, $LVS_NOLABELWRAP) Then $sLVSTYLES &= "LVS_NOLABELWRAP, "
    If BitAND($LVStyle, $LVS_NOSCROLL) Then $sLVSTYLES &= "LVS_NOSCROLL, "
    If BitAND($LVStyle, $LVS_NOSORTHEADER) Then $sLVSTYLES &= "LVS_NOSORTHEADER, "
    If BitAND($LVStyle, $LVS_OWNERDATA) Then $sLVSTYLES &= "LVS_OWNERDATA, "
    If BitAND($LVStyle, $LVS_OWNERDRAWFIXED) Then $sLVSTYLES &= "LVS_OWNERDRAWFIXED, "
    If BitAND($LVStyle, $LVS_REPORT) Then $sLVSTYLES &= "LVS_REPORT, "
    If BitAND($LVStyle, $LVS_SHAREIMAGELISTS) Then $sLVSTYLES &= "LVS_SHAREIMAGELISTS, "
    If BitAND($LVStyle, $LVS_SHOWSELALWAYS) Then $sLVSTYLES &= "LVS_SHOWSELALWAYS, "
    If BitAND($LVStyle, $LVS_SINGLESEL) Then $sLVSTYLES &= "LVS_SINGLESEL, "
    If BitAND($LVStyle, $LVS_SMALLICON) Then $sLVSTYLES &= "LVS_SMALLICON, "
    If BitAND($LVStyle, $LVS_SORTASCENDING) Then $sLVSTYLES &= "LVS_SORTASCENDING, "
    If BitAND($LVStyle, $LVS_SORTDESCENDING) Then $sLVSTYLES &= "LVS_SORTDESCENDING, "
    If BitAND($LVStyle, $LVS_TYPEMASK) Then $sLVSTYLES &= "LVS_TYPEMASK, "
    If BitAND($LVStyle, $LVS_TYPESTYLEMASK) Then $sLVSTYLES &= "LVS_TYPESTYLEMASK, "

    If BitAND($LVExStyle, $LVS_EX_AUTOAUTOARRANGE) Then $sLVExSTYLES &= "$LVS_EX_AUTOARRANGE, "
    If BitAND($LVExStyle, $LVS_EX_AUTOCHECKSELECT) Then $sLVExSTYLES &= "$LVS_EX_AUTOCHECKSELECT, "
    If BitAND($LVExStyle, $LVS_EX_AUTOSIZECOLUMNS) Then $sLVExSTYLES &= "$LVS_EX_AUTOSIZECOLUMNS, "
    If BitAND($LVExStyle, $LVS_EX_BORDERSELECT) Then $sLVExSTYLES &= "$LVS_EX_BORDERSELECT, "
    If BitAND($LVExStyle, $LVS_EX_CHECKBOXES) Then $sLVExSTYLES &= "$LVS_EX_CHECKBOXES, "
    If BitAND($LVExStyle, $LVS_EX_COLUMNOVERFLOW) Then $sLVExSTYLES &= "$LVS_EX_COLUMNOVERFLOW, "
    If BitAND($LVExStyle, $LVS_EX_COLUMNSNAPPOINTS) Then $sLVExSTYLES &= "$LVS_EX_COLUMNSNAPPOINTS, "
    If BitAND($LVExStyle, $LVS_EX_DOUBLEBUFFER) Then $sLVExSTYLES &= "$LVS_EX_DOUBLEBUFFER, "
    If BitAND($LVExStyle, $LVS_EX_FLATSB) Then $sLVExSTYLES &= "$LVS_EX_FLATSB, "
    If BitAND($LVExStyle, $LVS_EX_FULLROWSELECT) Then $sLVExSTYLES &= "$LVS_EX_FULLROWSELECT, "
    If BitAND($LVExStyle, $LVS_EX_GRIDLINES) Then $sLVExSTYLES &= "$LVS_EX_GRIDLINES, "
    If BitAND($LVExStyle, $LVS_EX_HEADERDRAGDROP) Then $sLVExSTYLES &= "$LVS_EX_HEADERDRAGDROP, "
    If BitAND($LVExStyle, $LVS_EX_HEADERINALLVIEWS) Then $sLVExSTYLES &= "$LVS_EX_HEADERINALLVIEWS, "
    If BitAND($LVExStyle, $LVS_EX_HIDELABELS) Then $sLVExSTYLES &= "$LVS_EX_HIDELABELS, "
    If BitAND($LVExStyle, $LVS_EX_INFOTIP) Then $sLVExSTYLES &= "$LVS_EX_INFOTIP, "
    If BitAND($LVExStyle, $LVS_EX_JUSTIFYCOLUMNS) Then $sLVExSTYLES &= "$LVS_EX_JUSTIFYCOLUMNS, "
    If BitAND($LVExStyle, $LVS_EX_LABELTIP) Then $sLVExSTYLES &= "$LVS_EX_LABELTIP, "
    If BitAND($LVExStyle, $LVS_EX_MULTIWORKAREAS) Then $sLVExSTYLES &= "$LVS_EX_MULTIWORKAREAS, "
    If BitAND($LVExStyle, $LVS_EX_ONECLICKACTIVATE) Then $sLVExSTYLES &= "$LVS_EX_ONECLICKACTIVATE, "
    If BitAND($LVExStyle, $LVS_EX_REGIONAL) Then $sLVExSTYLES &= "$LVS_EX_REGIONAL, "
    If BitAND($LVExStyle, $LVS_EX_SIMPLESELECT) Then $sLVExSTYLES &= "$LVS_EX_SIMPLESELECT, "
    If BitAND($LVExStyle, $LVS_EX_SNAPTOGRID) Then $sLVExSTYLES &= "$LVS_EX_SNAPTOGRID, "
    If BitAND($LVExStyle, $LVS_EX_SUBITEMIMAGES) Then $sLVExSTYLES &= "$LVS_EX_SUBITEMIMAGES, "
    If BitAND($LVExStyle, $LVS_EX_TRACKSELECT) Then $sLVExSTYLES &= "$LVS_EX_TRACKSELECT, "
    If BitAND($LVExStyle, $LVS_EX_TRANSPARENTBKGND) Then $sLVExSTYLES &= "$LVS_EX_TRANSPARENTBACKGROUND, "
    If BitAND($LVExStyle, $LVS_EX_TRANSPARENTSHADOWTEXT) Then $sLVExSTYLES &= "$LVS_EX_TRANSPARENTTEXTSHADOW, "
    If BitAND($LVExStyle, $LVS_EX_TWOCLICKACTIVATE) Then $sLVExSTYLES &= "$LVS_EX_TWOCLICKACTIVATE, "
    If BitAND($LVExStyle, $LVS_EX_UNDERLINECOLD) Then $sLVExSTYLES &= "$LVS_EX_UNDERLINECOLD, "
    If BitAND($LVExStyle, $LVS_EX_UNDERLINEHOT) Then $sLVExSTYLES &= "$LVS_EX_UNDERLINEHOT, "
    ConsoleWrite("Lv Styles= " & $sLVSTYLES & @CRLF)
    ConsoleWrite("Lv Ex Styles= " & $sLVExSTYLES & @CRLF)

    EndFunc   ;==>Debug_GetLvMStyles

    ;;#include <HeaderConstants.au3>
    Func Debug_GetHDStyles($hListView)
    Local $hHeader = _GUICtrlListView_GetHeader($hListView)
    Local $HDStyle = _WinAPI_GetWindowLong($hHeader, -16)
    Local $sHDSTYLES
    If @error Then
    ConsoleWrite(" Error Debug_GetHDStyles Couldn't retrieve Styles")
    Return
    EndIf
    If BitAND($HDStyle, $HDS_BUTTONS) Then $sHDSTYLES &= "$HDS_STYLES, " ;0x00000002 ; Each item in the control looks and behaves like a push button
    If BitAND($HDStyle, $HDS_CHECKBOXES) Then $sHDSTYLES &= "$HDS_CHECKBOXES, " ;0x00000400 ; Allows the placing of checkbo       ;es on header items on Vista
    If BitAND($HDStyle, $HDS_DRAGDROP) Then $sHDSTYLES &= "$HDS_DRAGDROP, " ;0x00000040 ; Allows drag-and-drop reordering of header items
    If BitAND($HDStyle, $HDS_FILTERBAR) Then $sHDSTYLES &= "$HDS_FILTERBAR, " ;0x00000100 ; Include a filter bar as part of the standard header control
    If BitAND($HDStyle, $HDS_FLAT) Then $sHDSTYLES &= "$HDS_FLAT, " ;0x00000200 ; Control is drawn flat when XP is running in classic mode
    If BitAND($HDStyle, $HDS_FULLDRAG) Then $sHDSTYLES &= "$HDS_FULLDRAG, " ;0x00000080 ; Column contents are displayed while the user resizes a column
    If BitAND($HDStyle, $HDS_HIDDEN) Then $sHDSTYLES &= "$HDS_HIDDEN, " ;0x00000008 ; Indicates a header control that is intended to be hidden
    If BitAND($HDStyle, $HDS_HORZ) Then $sHDSTYLES &= "$HDS_HORZ, " ;0x00000000 ; Creates a header control with a horizontal orientation
    If BitAND($HDStyle, $HDS_HOTTRACK) Then $sHDSTYLES &= "$HDS_HOTTRACK, " ;0x00000004 ; Enables hot tracking
    If BitAND($HDStyle, $HDS_NOSIZING) Then $sHDSTYLES &= "$HDS_NOSIZING, " ;0x0800 ; The user cannot drag the divider on the header control on Vista
    If BitAND($HDStyle, $HDS_OVERFLOW) Then $sHDSTYLES &= "$HDS_OVERFLOW, " ;0x1000 ; A button is displayed when not all items can be displayed within the header control's rectangle on Vista
    If BitAND($HDStyle, $HDS_DEFAULT) Then $sHDSTYLES &= "$HDS_DEFAULT, " ;0x00000046 ; Default header style $HDS_DRAGDROP + $HDS_HOTTRACK + $HDS_BUTTONS
    ConsoleWrite("Header Styles= " & $sHDSTYLES & @CRLF)
    EndFunc   ;==>Debug_GetHDStyles

    Func Debug_GetWSStyles($hWnd)
    ;#include <WindowsConstants.au3>
    Local $WSStyle = _WinAPI_GetWindowLong($hWnd, -16)
    Local $sWSSTYLES
    Local $WSEXStyle = _WinAPI_GetWindowLong($hWnd, -20) ;_GUICtrlListView_GetExtendedListViewStyle($hListView);
    Local $sWSEXSTYLES
    If @error Then
    ConsoleWrite(" Error Debug_GetWSStyles Couldn't retrieve Styles")
    Return
    EndIf
    If BitAND($WSStyle, $WS_OVERLAPPED) Then $sWSSTYLES &= "$WS_OVERLAPPED, "
    If BitAND($WSStyle, $WS_TILED) Then $sWSSTYLES &= "$WS_TILED, "
    If BitAND($WSStyle, $WS_MAXIMIZEBOX) Then $sWSSTYLES &= "$WS_MAXIMIZEBOX, " ;0x00010000
    If BitAND($WSStyle, $WS_MINIMIZEBOX) Then $sWSSTYLES &= "$WS_MINIMIZEBOX, " ;0x00020000
    If BitAND($WSStyle, $WS_TABSTOP) Then $sWSSTYLES &= "$WS_TABSTOP, " ;0x00010000
    If BitAND($WSStyle, $WS_GROUP) Then $sWSSTYLES &= "$WS_GROUP, " ;0x00020000
    If BitAND($WSStyle, $WS_SIZEBOX) Then $sWSSTYLES &= "$WS_SIZEBOX, " ;0x00040000
    If BitAND($WSStyle, $WS_THICKFRAME) Then $sWSSTYLES &= "$WS_THICKFRAME, "
    If BitAND($WSStyle, $WS_SYSMENU) Then $sWSSTYLES &= "$WS_SYSMENU, " ;0x00080000
    If BitAND($WSStyle, $WS_HSCROLL) Then $sWSSTYLES &= "$WS_HSCROLL, " ;0x00100000
    If BitAND($WSStyle, $WS_VSCROLL) Then $sWSSTYLES &= "$WS_VSCROLL, " ;0x00200000
    If BitAND($WSStyle, $WS_DLGFRAME) Then $sWSSTYLES &= "$WS_DLGFRAME, " ;0x00400000
    If BitAND($WSStyle, $WS_BORDER) Then $sWSSTYLES &= "$WS_BORDER, " ;0x00800000
    If BitAND($WSStyle, $WS_CAPTION) Then $sWSSTYLES &= "$WS_CAPTION, " ;0x00C00000
    If BitAND($WSStyle, $WS_OVERLAPPEDWINDOW) Then $sWSSTYLES &= "$WS_OVERLAPPEDWINDOW, "
    If BitAND($WSStyle, $WS_TILEDWINDOW) Then $sWSSTYLES &= "$WS_TILEDWINDOW, "
    If BitAND($WSStyle, $WS_MAXIMIZE) Then $sWSSTYLES &= "$WS_MAXIMIZE, " ;0x01000000
    If BitAND($WSStyle, $WS_CLIPCHILDREN) Then $sWSSTYLES &= "$WS_CLIPCHILDREN, " ;0x02000000
    If BitAND($WSStyle, $WS_CLIPSIBLINGS) Then $sWSSTYLES &= "$WS_CLIPSIBLINGS, " ;0x04000000
    If BitAND($WSStyle, $WS_DISABLED) Then $sWSSTYLES &= "$WS_DISABLED, " ;0x08000000
    If BitAND($WSStyle, $WS_VISIBLE) Then $sWSSTYLES &= "$WS_VISIBLE, " ;0x10000000
    If BitAND($WSStyle, $WS_MINIMIZE) Then $sWSSTYLES &= "$WS_MINIMIZE, " ;0x20000000
    If BitAND($WSStyle, $WS_ICONIC) Then $sWSSTYLES &= "$WS_ICONIC, "
    If BitAND($WSStyle, $WS_CHILD) Then $sWSSTYLES &= "$WS_CHILD, " ;0x40000000
    If BitAND($WSStyle, $WS_CHILDWINDOW) Then $sWSSTYLES &= "$WS_CHILDWINDOW, "
    If BitAND($WSStyle, $WS_POPUP) Then $sWSSTYLES &= "$WS_POPUP, " ;0x80000000
    If BitAND($WSStyle, $WS_POPUPWINDOW) Then $sWSSTYLES &= "$WS_POPUPWINDOW, " ;0x80880000

    If BitAND($WSEXStyle, $WS_EX_ACCEPTFILES) Then $sWSEXSTYLES &= "$WS_EX_ACCEPTFILES, " ;0x00000010
    If BitAND($WSEXStyle, $WS_EX_APPWINDOW) Then $sWSEXSTYLES &= "$WS_EX_APPWINDOW, " ;0x00040000
    If BitAND($WSEXStyle, $WS_EX_COMPOSITED) Then $sWSEXSTYLES &= "$WS_EX_COMPOSITED, " ;0x02000000
    If BitAND($WSEXStyle, $WS_EX_CONTROLPARENT) Then $sWSEXSTYLES &= "$WS_EX_CONTROLPARENT, " ;0x10000
    If BitAND($WSEXStyle, $WS_EX_CLIENTEDGE) Then $sWSEXSTYLES &= "$WS_EX_CLIENTEDGE, " ;0x00000200
    If BitAND($WSEXStyle, $WS_EX_CONTEXTHELP) Then $sWSEXSTYLES &= "$WS_EX_CONTEXTHELP, " ;0x00000400
    If BitAND($WSEXStyle, $WS_EX_DLGMODALFRAME) Then $sWSEXSTYLES &= "$WS_EX_DLGMODALFRAME, " ;0x00000001
    If BitAND($WSEXStyle, $WS_EX_LAYERED) Then $sWSEXSTYLES &= "$WS_EX_LAYERED, " ;0x00080000
    If BitAND($WSEXStyle, $WS_EX_LAYOUTRTL) Then $sWSEXSTYLES &= "$WS_EX_LAYOUTRTL, " ;0x400000
    If BitAND($WSEXStyle, $WS_EX_LEFT) Then $sWSEXSTYLES &= "$WS_EX_LEFT, " ;0x00000000
    If BitAND($WSEXStyle, $WS_EX_LEFTSCROLLBAR) Then $sWSEXSTYLES &= "$WS_EX_LEFTSCROLLBAR, " ;0x00004000
    If BitAND($WSEXStyle, $WS_EX_LTRREADING) Then $sWSEXSTYLES &= "$WS_EX_LTRREADING, " ;0x00000000
    If BitAND($WSEXStyle, $WS_EX_MDICHILD) Then $sWSEXSTYLES &= "$WS_EX_MDICHILD, " ;0x00000040
    If BitAND($WSEXStyle, $WS_EX_NOACTIVATE) Then $sWSEXSTYLES &= "$WS_EX_NOACTIVATE, " ;0x08000000
    If BitAND($WSEXStyle, $WS_EX_NOINHERITLAYOUT) Then $sWSEXSTYLES &= "$WS_EX_NOINHERITLAYOUT, " ;0x00100000
    If BitAND($WSEXStyle, $WS_EX_NOPARENTNOTIFY) Then $sWSEXSTYLES &= "$WS_EX_NOPARENTNOTIFY, " ;0x00000004
    If BitAND($WSEXStyle, $WS_EX_RIGHT) Then $sWSEXSTYLES &= "$WS_EX_RIGHT, " ;0x00001000
    If BitAND($WSEXStyle, $WS_EX_RIGHTSCROLLBAR) Then $sWSEXSTYLES &= "$WS_EX_RIGHTSCROLLBAR, " ;0x00000000
    If BitAND($WSEXStyle, $WS_EX_RTLREADING) Then $sWSEXSTYLES &= "$WS_EX_RTLREADING, " ;0x2000
    If BitAND($WSEXStyle, $WS_EX_STATICEDGE) Then $sWSEXSTYLES &= "$WS_EX_STATICEDGE, " ;0x00020000
    If BitAND($WSEXStyle, $WS_EX_TOOLWINDOW) Then $sWSEXSTYLES &= "$WS_EX_TOOLWINDOW, " ;0x00000080
    If BitAND($WSEXStyle, $WS_EX_TOPMOST) Then $sWSEXSTYLES &= "$WS_EX_TOPMOST, " ;0x00000008
    If BitAND($WSEXStyle, $WS_EX_TRANSPARENT) Then $sWSEXSTYLES &= "$WS_EX_TRANSPARENT, " ;0x00000020
    If BitAND($WSEXStyle, $WS_EX_WINDOWEDGE) Then $sWSEXSTYLES &= "$WS_EX_WINDOWEDGE, " ;0x00000100
    If BitAND($WSEXStyle, $WS_EX_OVERLAPPEDWINDOW) Then $sWSEXSTYLES &= "$WS_EX_OVERLAPPEDWINDOW, "
    If BitAND($WSEXStyle, $WS_EX_PALETTEWINDOW) Then $sWSEXSTYLES &= "$WS_EX_PALETTEWINDOW, "
    ConsoleWrite("WS Styles= " & $sWSSTYLES & @CRLF)
    ConsoleWrite("WS EX Styles= " & $sWSEXSTYLES & @CRLF)
    EndFunc   ;==>Debug_GetWSStyles

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Broihon
      By Broihon
      Hey guys,

      I ran into a problem when I wanted to delete items of a listview using the delete key. My approach is to register my own WndProc for the listview and then filter the $WM_GETDLGCODE msg and then call the original WndProc.
      That works like a charm. The problem is that when the listview gets redrawn it somehow ends up in an infinite loop. The listview is suddenly emtpy and I can't interact with any controls of the GUI at all. Here's the code:
       
      #include <GUIConstantsEx.au3> #include <GUIListView.au3> #include <WinAPI.au3> $h_GUI = GUICreate("Test", 200, 200, 350, 350) $h_LV = GUICtrlCreateListView("Col 1|Col 2|Col 3", 0, 0, 200, 200) _GUICtrlListView_AddItem($h_LV, "") _GUICtrlListView_AddSubItem($h_LV, 0, "bla0", 0) _GUICtrlListView_AddSubItem($h_LV, 0, "bla0", 1) _GUICtrlListView_AddSubItem($h_LV, 0, "bla0", 2) _GUICtrlListView_AddItem($h_LV, "") _GUICtrlListView_AddSubItem($h_LV, 1, "bla1", 0) _GUICtrlListView_AddSubItem($h_LV, 1, "bla1", 1) _GUICtrlListView_AddSubItem($h_LV, 1, "bla1", 2) _GUICtrlListView_AddItem($h_LV, "") _GUICtrlListView_AddSubItem($h_LV, 2, "bla2", 0) _GUICtrlListView_AddSubItem($h_LV, 2, "bla2", 1) _GUICtrlListView_AddSubItem($h_LV, 2, "bla2", 2) _GUICtrlListView_AddItem($h_LV, "") _GUICtrlListView_AddSubItem($h_LV, 3, "bla3", 0) _GUICtrlListView_AddSubItem($h_LV, 3, "bla3", 1) _GUICtrlListView_AddSubItem($h_LV, 3, "bla3", 2) $h_LV_NewWndProc = DllCallbackRegister("WndProc_LV", "int", "hwnd;uint;wparam;lparam") $g_LV_OldWndProc = _WinAPI_SetWindowLong(GUICtrlGetHandle($h_LV), $GWL_WNDPROC, DllCallbackGetPtr($h_LV_NewWndProc)) GUISetState(@SW_SHOW) Func WndProc_LV($hWnd, $uMsg, $wParam, $lParam) Return _WinAPI_CallWindowProc($g_LV_OldWndProc, $hWnd, $uMsg, $wParam, $lParam) EndFunc ;==>WndProc_GUI Do Until GUIGetMsg() = $GUI_EVENT_CLOSE DllCallbackFree($h_LV_NewWndProc) As you can see I'm doing nothing in the WndProc of the listview. I'm simply calling the original WndProc. This still "freezes" when I mess with the width of the columns or in the original project when I add more items that they don't fit in the listview and I have to scroll. If I don't do that it's working fine.
    • c.haslam
      By c.haslam
      I have
      Local $idListview = GUICtrlCreateListView("",8,8,@DesktopWidth/2-16,@DesktopHeight-150,$LVS_SHOWSELALWAYS, _ $LVS_EX_INFOTIP) Local $hListView = GUICtrlGetHandle($idListview) _GUICtrlListView_InsertColumn($hListview, 0, "Filename", 400) _GUICtrlListView_InsertColumn($hListview, 1, "Ext", 50) _GUICtrlListView_InsertColumn($hListview, 2, "Size",70) _GUICtrlListView_InsertColumn($hListview, 3, 'Date time',100) _GUICtrlListView_InsertColumn($hListview, 4, "Path", 385) _GUICtrlListView_InsertColumn($hListview, 5, "sizeInt", 0) _GUICtrlListView_JustifyColumn($hListview, $kSize,1) ; right align then further on
      While True $sFnamExt = FileFindNextFile($iSrch) If @error Then ExitLoop EndIf $sAtts = FileGetAttrib($sPath&'\'&$sFnamExt) If StringInStr($sAtts,'D') Then If $sFnamExt<>'$RECYCLE.BIN' Then $sDirs &= '?'&$sPath&'\'&$sFnamExt EndIf Else $p = StringInStr($sFnamExt,'.',0,-1) ; last If $p=0 Then $sFnam = $sFnamExt $sExt = '' Else $sFnam = StringLeft($sFnamExt,$p-1) $sExt = StringTrimLeft($sFnamExt,$p) EndIf _GUICtrlListView_AddItem($hListview,$sFnam,-1,_GUICtrlListView_GetItemCount($hListview)+1000) _GUICtrlListView_AddSubItem($hListview,$nItem,$sExt,$kExt) $nSize = FileGetSize($sPath&'\'&$sFnamExt) $sSize = AddThousandsSeparator($nsize) _GUICtrlListView_AddSubItem($hListview,$nItem,$sSize,$kSize) _GUICtrlListView_AddSubItem($hListview,$nItem,$nsize,$kSizeInt) $nTotBytes += $nSize $a1 = FileGetTime($sPath&'\'&$sFnamExt,$FT_MODIFIED,$FT_ARRAY) $t = $a1[0]&'-'&$a1[1]&'-'&$a1[2]&' '&$a1[3]&':'&$a1[4] _GUICtrlListView_AddSubItem($hListview,$nItem,$t,$kDateTime) _GUICtrlListView_AddSubItem($hListview,$nItem,$sPath,$kPath) If $gSQL Then $s = "Insert into tbl values ("&_SQLite_Escape($sFnam)&","&_SQLite_Escape($sExt)&",'"& _ $sSize&"','"& _ $t&"',"&_SQLite_Escape($sPath)&","&$nSize&")" _SQLite_Exec(-1,$s) If @error Then MsgBox(0,@ScriptLineNumber,_SQLite_ErrMsg()) EndIf EndIf EndIf WEnd FileClose($iSrch) You will see that I heeded the advice in Help > _GUICtrlListView_AddItem: "As AutoIt uses the $iParam parameter to store the controlID of native-created ListView items, this value should be set sufficiently high for UDF-created items to avoid possible conflict with any existing controls - a starting value of 1000 is recommended."
      (It's unfortunate that the Example does not heed this advice. OK, it doesn't need to because there are no other controls, but still --- it would help neophytes if it did. Also to me _GUICtrlListView_AddItem is not native because it is a UDF. Confused?)
      My script then does a sort using SQLite, and updates the ListView:
      Local $hQuery Local $colNames = ['fnam','ext','nsize','dateTime','path','SizeInt'] Local $s = "Select * FROM tbl ORDER BY "&$colNames[$ncol]&';' _SQLite_Query(-1,$s, $hQuery) If @error Then MsgBox(0,@ScriptLineNumber,_SQLite_ErrMsg()) EndIf Local $aRow[$kSizeInt+1] Local $iItem=-1 While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row If @error Then MsgBox(0,@ScriptLineNumber,_SQLite_ErrMsg()) EndIf $iItem += 1 For $i = $kFnam To $kSizeInt _GUICtrlListView_SetItem($hListview,$aRow[$i],$iItem,$i,Default) Next WEnd This works, but I had earlier coded
      _GUICtrlListView_SetItem($hListview,$aRow[$i],$iItem,$i,Default,$iItem+1000) because the same advice is in the Help for this function.
      So my care in specifying $param back-fired! What am I not understanding?
      The only difference in what works is that the $param parameter is defaulted.
    • FrancescoDiMuro
      By FrancescoDiMuro
      Good evening everyone
      I am building a management for the company I work with, and I just imported a real amount of rows ( about 29000 ), in my SQLite DB.
      The thing I am not understanding, is the time that the script takes to build this amount of rows in the ListView.
      I didn't measure it, but I think it took 2 minutes or so to create each ListView item...
      It is normal that it takes so much time?
      What can I do to improve the creation of the items?

      Here's the code I am using to query and to create ListView items...
      ; Articles ListView: Global $lvwArticles = GUICtrlCreateListView("ID|Fornitore|Codice|Descrizione|EU|Prezzo|Sconto Applicato|Note", 14, 87, 1507, 660, BitOR($GUI_SS_DEFAULT_LISTVIEW,$LVS_SORTASCENDING,$LVS_SORTDESCENDING), BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT)) ; Query $strQuery = "SELECT * FROM ARTICOLI;" ; Query Execution _SQLite_GetTable2d($objDatabase, $strQuery, $arrResult, $intRows, $intColumns) If @error Then ; Error Handling Else ; Cleaning the ListView _GUICtrlListView_DeleteAllItems($lvwArticles) If @error Then ; Error Handling Else ; No records in the Table If UBound($arrResult) < 2 Then ; Error Handling Else _GUICtrlListView_BeginUpdate($lvwArticles) For $intCounter = 1 To UBound($arrResult) - 1 $strListViewItem = $arrResult[$intCounter][0] & "|" & _ $arrResult[$intCounter][1] & "|" & _ $arrResult[$intCounter][2] & "|" & _ $arrResult[$intCounter][3] & "|" & _ $arrResult[$intCounter][4] & "|" & _ $arrResult[$intCounter][5] & "|" & _ $arrResult[$intCounter][6] & "|" & _ $arrResult[$intCounter][7] $objListViewItem = GUICtrlCreateListViewItem($strListViewItem, $lvwArticles) Next _GUICtrlListView_EndUpdate($lvwArticles) EndIf EndIf EndIf Thanks in advance


      Best Regards.
    • rcmaehl
      By rcmaehl
      A UDF with Extended Functions for Window Management
       
      Notes:
      Fixes WinGetClassList's barbaric returning of a @LF separated string instead of an array.
       
      Potential Uses:
      Automating applications that change their controls' handles/classes on each launch (e.g. half of Cisco's programs)
       
      Functions:
      _WinGetClassList
      _WinGetClassNNList
      _WindowGetHandleList
      _WindowGetHandleListFromPos
       
      Download: 
      WindowEx.zip  (v0.4)
       
      Changelog:
      10/04/2016 (v0.4): _WinGetClassNNList Fixed : Not Returning an Index when using $2D_ARRAY _WinGetClassNNList Fixed : Not Properly returning $aArray[x][1] on Classes with instances > 9 when using $2D_ARRAY 10/03/2016 (v0.3): _WinGetClassList Added : Exactly the same as WinGetClassList but returns a more civilized Array _WinGetClassNNList Added : Returns Classes and their instances in either a 1D or 2D array depending on Flags _WindowGetHandleList Renamed: _WinGetHandleList SCRIPT BREAKING! _WindowGetHandleListFromPos Renamed: _WinGetHandleListFromPos SCRIPT BREAKING! 10/01/2016 (v0.2): WindowsExConstants.au3 Added : Flags in _WindowGetHandleListFromPos _WindowGetHandleListFromPos Removed: ConsoleWrite left in during debug _WindowGetHandleListFromPos Added : Flag for if part of a Control is at $X, $Y return it as well. 10/01/2016 (v0.1): _WindowGetHandleList Added : Retrieves the handles of classes from a window. _WindowGetHandleListFromPos Added : Retrieves the handles of classes at a specific position from a window. Known and Reported Bugs:
      None reported To Do:
      To Be Decided. Opinions welcome! Upcoming Changes:
      To Be Decided.
    • FrancescoDiMuro
      By FrancescoDiMuro
      Good morning everyone

      I was playing a little bit with "Screen Capture" UDF, and I was trying to make a "Window" capture, but, since I made a GUI which through I fire the event "Capture", my GUI is captured as well, and I don't want to
      This is the line of code that makes the capture:
       
      _ScreenCapture_CaptureWnd($strScreenCaptureFileName, $objActiveWindow, 0, 0, -1, -1, False) And these are the lines of code which select the "active" window:
       
      Local $objCurrentWindow = 9999 If _IsPressed("01") Then $objCurrentWindow = WinGetHandle("[ACTIVE]") If $objCurrentWindow <> $objMyGUI Then $objActiveWindow = $objCurrentWindow EndIf EndIf Sorry If I made stupid mistakes
      Thanks in advance.

      Francesco
×