Listview的API全集--------www.mvps.org

thorkhan 2002-04-11 10:28:20
Public Const WC_LISTVIEW = "SysListView32"

Public Enum LVStyles
LVS_ICON = &H0
LVS_REPORT = &H1
LVS_SMALLICON = &H2
LVS_LIST = &H3
LVS_TYPEMASK = &H3
LVS_SINGLESEL = &H4
LVS_SHOWSELALWAYS = &H8
LVS_SORTASCENDING = &H10
LVS_SORTDESCENDING = &H20
LVS_SHAREIMAGELISTS = &H40
LVS_NOLABELWRAP = &H80
LVS_AUTOARRANGE = &H100
LVS_EDITLABELS = &H200

#If (WIN32_IE >= &H300) Then
LVS_OWNERDATA = &H1000
#End If

LVS_NOSCROLL = &H2000

LVS_TYPESTYLEMASK = &HFC00

LVS_ALIGNTOP = &H0
LVS_ALIGNLEFT = &H800
LVS_ALIGNMASK = &HC00

LVS_OWNERDRAWFIXED = &H400
LVS_NOCOLUMNHEADER = &H4000
LVS_NOSORTHEADER = &H8000&
End Enum ' LVStyles

' ============================================
' Messages

Public Enum LVMessages
LVM_FIRST = &H1000

LVM_GETBKCOLOR = (LVM_FIRST + 0)
LVM_SETBKCOLOR = (LVM_FIRST + 1)
LVM_GETIMAGELIST = (LVM_FIRST + 2)

LVM_SETIMAGELIST = (LVM_FIRST + 3)
LVM_GETITEMCOUNT = (LVM_FIRST + 4)

#If UNICODE Then
LVM_GETITEM = (LVM_FIRST + 75)
LVM_SETITEM = (LVM_FIRST + 76)
LVM_INSERTITEM = (LVM_FIRST + 77)
#Else
LVM_GETITEM = (LVM_FIRST + 5)
LVM_SETITEM = (LVM_FIRST + 6)
LVM_INSERTITEM = (LVM_FIRST + 7)
#End If

LVM_DELETEITEM = (LVM_FIRST + 8)
LVM_DELETEALLITEMS = (LVM_FIRST + 9)

LVM_GETCALLBACKMASK = (LVM_FIRST + 10)
LVM_SETCALLBACKMASK = (LVM_FIRST + 11)

LVM_GETNEXTITEM = (LVM_FIRST + 12)

#If UNICODE Then
LVM_FINDITEM = (LVM_FIRST + 83)
#Else
LVM_FINDITEM = (LVM_FIRST + 13)
#End If

LVM_GETITEMRECT = (LVM_FIRST + 14)
LVM_SETITEMPOSITION = (LVM_FIRST + 15)
LVM_GETITEMPOSITION = (LVM_FIRST + 16)

#If UNICODE Then
LVM_GETSTRINGWIDTH = (LVM_FIRST + 87)
#Else
LVM_GETSTRINGWIDTH = (LVM_FIRST + 17)
#End If

LVM_HITTEST = (LVM_FIRST + 18)
LVM_ENSUREVISIBLE = (LVM_FIRST + 19)
LVM_SCROLL = (LVM_FIRST + 20)
LVM_REDRAWITEMS = (LVM_FIRST + 21)
LVM_ARRANGE = (LVM_FIRST + 22)

#If UNICODE Then
LVM_EDITLABEL = (LVM_FIRST + 118)
#Else
LVM_EDITLABEL = (LVM_FIRST + 23)
#End If

LVM_GETEDITCONTROL = (LVM_FIRST + 24)

#If UNICODE Then
LVM_GETCOLUMN = (LVM_FIRST + 95)
LVM_SETCOLUMN = (LVM_FIRST + 96)
LVM_INSERTCOLUMN = (LVM_FIRST + 97)
#Else
LVM_GETCOLUMN = (LVM_FIRST + 25)
LVM_SETCOLUMN = (LVM_FIRST + 26)
LVM_INSERTCOLUMN = (LVM_FIRST + 27)
#End If

LVM_DELETECOLUMN = (LVM_FIRST + 28)
LVM_GETCOLUMNWIDTH = (LVM_FIRST + 29)

LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30)

#If (WIN32_IE >= &H300) Then
LVM_GETHEADER = (LVM_FIRST + 31)
#End If

LVM_CREATEDRAGIMAGE = (LVM_FIRST + 33)
LVM_GETVIEWRECT = (LVM_FIRST + 34)
LVM_GETTEXTCOLOR = (LVM_FIRST + 35)
LVM_SETTEXTCOLOR = (LVM_FIRST + 36)
LVM_GETTEXTBKCOLOR = (LVM_FIRST + 37)
LVM_SETTEXTBKCOLOR = (LVM_FIRST + 38)
LVM_GETTOPINDEX = (LVM_FIRST + 39)
LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40)
LVM_GETORIGIN = (LVM_FIRST + 41)
LVM_UPDATE = (LVM_FIRST + 42)
LVM_SETITEMSTATE = (LVM_FIRST + 43)
LVM_GETITEMSTATE = (LVM_FIRST + 44)

#If UNICODE Then
LVM_GETITEMTEXT = (LVM_FIRST + 115)
LVM_SETITEMTEXT = (LVM_FIRST + 116)
#Else
LVM_GETITEMTEXT = (LVM_FIRST + 45)
LVM_SETITEMTEXT = (LVM_FIRST + 46)
#End If

LVM_SETITEMCOUNT = (LVM_FIRST + 47)

LVM_SORTITEMS = (LVM_FIRST + 48)
LVM_SETITEMPOSITION32 = (LVM_FIRST + 49)
LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50)
LVM_GETITEMSPACING = (LVM_FIRST + 51)

#If UNICODE Then
LVM_GETISEARCHSTRING = (LVM_FIRST + 117)
#Else
LVM_GETISEARCHSTRING = (LVM_FIRST + 52)
#End If

#If (WIN32_IE >= &H300) Then
LVM_SETICONSPACING = (LVM_FIRST + 53)
LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54)
LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55)

LVM_GETSUBITEMRECT = (LVM_FIRST + 56)
LVM_SUBITEMHITTEST = (LVM_FIRST + 57)
LVM_SETCOLUMNORDERARRAY = (LVM_FIRST + 58)
LVM_GETCOLUMNORDERARRAY = (LVM_FIRST + 59)
LVM_SETHOTITEM = (LVM_FIRST + 60)
LVM_GETHOTITEM = (LVM_FIRST + 61)
LVM_SETHOTCURSOR = (LVM_FIRST + 62)
LVM_GETHOTCURSOR = (LVM_FIRST + 63)
LVM_APPROXIMATEVIEWRECT = (LVM_FIRST + 64)
#End If ' // WIN32_IE >= &H300

#If (WIN32_IE >= &H400) Then
LVM_SETWORKAREAS = (LVM_FIRST + 65)
LVM_GETWORKAREAS = (LVM_FIRST + 70)
LVM_GETNUMBEROFWORKAREAS = (LVM_FIRST + 73)
LVM_GETSELECTIONMARK = (LVM_FIRST + 66)
LVM_SETSELECTIONMARK = (LVM_FIRST + 67)
LVM_SETHOVERTIME = (LVM_FIRST + 71)
LVM_GETHOVERTIME = (LVM_FIRST + 72)
LVM_SETTOOLTIPS = (LVM_FIRST + 74)
LVM_GETTOOLTIPS = (LVM_FIRST + 78)

#If UNICODE Then
LVM_SETBKIMAGE = (LVM_FIRST + 138)
LVM_GETBKIMAGE = (LVM_FIRST + 139)
#Else
LVM_SETBKIMAGE = (LVM_FIRST + 68)
LVM_GETBKIMAGE = (LVM_FIRST + 69)
#End If

#End If ' // WIN32_IE >= &H400

#If (WIN32_IE >= &H400) Then
LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
#End If

End Enum ' LVMessages

Public Const LV_MAX_WORKAREAS = 16

' LVM_GETIMAGELIST wParam
Public Enum LVSIL_Flags
LVSIL_NORMAL = 0
LVSIL_SMALL = 1
LVSIL_STATE = 2
End Enum

' LVM_GETNEXTITEM flags
Public Enum LVNI_Flags
LVNI_ALL = &H0
LVNI_FOCUSED = &H1
LVNI_SELECTED = &H2
LVNI_CUT = &H4
LVNI_DROPHILITED = &H8

LVNI_ABOVE = &H100
LVNI_BELOW = &H200
LVNI_TOLEFT = &H400
LVNI_TORIGHT = &H800
End Enum

' LVM_GETITEMRECT rct.Left
Public Enum LVIR_Flags
LVIR_BOUNDS = 0
LVIR_ICON = 1
LVIR_LABEL = 2
LVIR_SELECTBOUNDS = 3
End Enum

' LVM_ARRANGE wParam
Public Enum LVA_Flags
LVA_DEFAULT = &H0
LVA_ALIGNLEFT = &H1
LVA_ALIGNTOP = &H2
LVA_SNAPTOGRID = &H5
End Enum

' ============================================
' Structures and their flags

Public Type LVITEM ' was LV_ITEM
mask As LVITEM_mask
iItem As Long
iSubItem As Long
state As LVITEM_state
stateMask As Long
pszText As Long ' if String, must be pre-allocated
cchTextMax As Long
iImage As Long
lParam As Long
#If (WIN32_IE >= &H300) Then
iIndent As Long
#End If
End Type

#If (WIN32_IE >= &H300) Then
Public Const I_INDENTCALLBACK = (-1) ' iIndent, 4.70
#End If

Public Enum LVITEM_mask
LVIF_TEXT = &H1
LVIF_IMAGE = &H2
LVIF_PARAM = &H4
LVIF_STATE = &H8
#If (WIN32_IE >= &H300) Then
LVIF_INDENT = &H10
LVIF_NORECOMPUTE = &H800
#End If
LVIF_DI_SETITEM = &H1000 ' NMLVDISPINFO notification
End Enum
...全文
369 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziyue 2002-04-18
  • 打赏
  • 举报
回复
写的。好
thorkhan 2002-04-11
  • 打赏
  • 举报
回复
' Returns the low 16-bit integer from a 32-bit long integer

Public Function LOWORD(dwValue As Long) As Integer
MoveMemory LOWORD, dwValue, 2
End Function

' Returns the low 16-bit integer from a 32-bit long integer

Public Function HIWORD(dwValue As Long) As Integer
MoveMemory HIWORD, ByVal VarPtr(dwValue) + 2, 2
End Function

' Combines two integers into a long integer

Public Function MAKELONG(wLow As Long, wHigh As Long) As Long
MAKELONG = wLow
MoveMemory ByVal VarPtr(MAKELONG) + 2, wHigh, 2
End Function

' Combines two integers into a long integer

Public Function MAKELPARAM(wLow As Long, wHigh As Long) As Long
MAKELPARAM = MAKELONG(wLow, wHigh)
End Function

' =============================================================================

Public Function ListView_GetBkColor(hWnd As Long) As Long
ListView_GetBkColor = SendMessage(hWnd, LVM_GETBKCOLOR, 0, 0)
End Function

Public Function ListView_SetBkColor(hWnd As Long, clrBk As Long) As Boolean
ListView_SetBkColor = SendMessage(hWnd, LVM_SETBKCOLOR, 0, ByVal clrBk)
End Function

Public Function ListView_GetImageList(hWnd As Long, iImageList As LVSIL_Flags) As Long
ListView_GetImageList = SendMessage(hWnd, LVM_GETIMAGELIST, ByVal iImageList, 0)
End Function

Public Function ListView_SetImageList(hWnd As Long, himl As Long, iImageList As Long) As Long
ListView_SetImageList = SendMessage(hWnd, LVM_SETIMAGELIST, ByVal iImageList, ByVal himl)
End Function

Public Function ListView_GetItemCount(hWnd As Long) As Long
ListView_GetItemCount = SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0)
End Function

Public Function ListView_GetItem(hWnd As Long, pitem As LVITEM) As Boolean
ListView_GetItem = SendMessage(hWnd, LVM_GETITEM, 0, pitem)
End Function

Public Function ListView_SetItem(hWnd As Long, pitem As LVITEM) As Boolean
ListView_SetItem = SendMessage(hWnd, LVM_SETITEM, 0, pitem)
End Function

Public Function ListView_InsertItem(hWnd As Long, pitem As LVITEM) As Long
ListView_InsertItem = SendMessage(hWnd, LVM_INSERTITEM, 0, pitem)
End Function

Public Function ListView_DeleteItem(hWnd As Long, i As Long) As Boolean
ListView_DeleteItem = SendMessage(hWnd, LVM_DELETEITEM, ByVal i, 0)
End Function

Public Function ListView_DeleteAllItems(hWnd As Long) As Boolean
ListView_DeleteAllItems = SendMessage(hWnd, LVM_DELETEALLITEMS, 0, 0)
End Function

Public Function ListView_GetCallbackMask(hWnd As Long) As Long ' LVStyles
ListView_GetCallbackMask = SendMessage(hWnd, LVM_GETCALLBACKMASK, 0, 0)
End Function

Public Function ListView_SetCallbackMask(hWnd As Long, mask As LVStyles) As Boolean
ListView_SetCallbackMask = SendMessage(hWnd, LVM_SETCALLBACKMASK, ByVal mask, 0)
End Function

Public Function ListView_GetNextItem(hWnd As Long, i As Long, flags As LVNI_Flags) As Long
ListView_GetNextItem = SendMessage(hWnd, LVM_GETNEXTITEM, ByVal i, ByVal MAKELPARAM(flags, 0))
End Function

Public Function ListView_FindItem(hWnd As Long, iStart, plvfi As LVFINDINFO) As Long
ListView_FindItem = SendMessage(hWnd, LVM_FINDITEM, ByVal iStart, plvfi)
End Function

Public Function ListView_GetItemRect(hWnd As Long, i As Long, prc As RECT, code As LVIR_Flags) As Boolean
prc.Left = code
ListView_GetItemRect = SendMessage(hWnd, LVM_GETITEMRECT, ByVal i, prc)
End Function

Public Function ListView_SetItemPosition(hwndLV As Long, i As Long, x As Long, y As Long) As Boolean
ListView_SetItemPosition = SendMessage(hwndLV, LVM_SETITEMPOSITION, ByVal i, ByVal MAKELPARAM(x, y))
End Function

Public Function ListView_GetItemPosition(hwndLV As Long, i As Long, ppt As POINTAPI) As Boolean
ListView_GetItemPosition = SendMessage(hwndLV, LVM_GETITEMPOSITION, ByVal i, ppt)
End Function

Public Function ListView_GetStringWidth(hwndLV As Long, psz As String) As Long
ListView_GetStringWidth = SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, ByVal psz)
End Function

Public Function ListView_HitTest(hwndLV As Long, pinfo As LVHITTESTINFO) As Long
ListView_HitTest = SendMessage(hwndLV, LVM_HITTEST, 0, pinfo)
End Function

Public Function ListView_EnsureVisible(hwndLV As Long, i As Long, fPartialOK As Boolean) As Boolean
ListView_EnsureVisible = SendMessage(hwndLV, LVM_ENSUREVISIBLE, ByVal i, ByVal MAKELPARAM(Abs(fPartialOK), 0))
End Function

Public Function ListView_Scroll(hwndLV As Long, dx As Long, dy As Long) As Boolean
ListView_Scroll = SendMessage(hwndLV, LVM_SCROLL, ByVal dx, ByVal dy)
End Function

Public Function ListView_RedrawItems(hwndLV As Long, iFirst, iLast) As Boolean
ListView_RedrawItems = SendMessage(hwndLV, LVM_REDRAWITEMS, ByVal iFirst, ByVal iLast)
End Function

Public Function ListView_Arrange(hwndLV As Long, code As LVA_Flags) As Boolean
ListView_Arrange = SendMessage(hwndLV, LVM_ARRANGE, ByVal code, 0)
End Function

Public Function ListView_EditLabel(hwndLV As Long, i As Long) As Long
ListView_EditLabel = SendMessage(hwndLV, LVM_EDITLABEL, ByVal i, 0)
End Function

Public Function ListView_GetEditControl(hwndLV As Long) As Long
ListView_GetEditControl = SendMessage(hwndLV, LVM_GETEDITCONTROL, 0, 0)
End Function

Public Function ListView_GetColumn(hWnd As Long, iCol As Long, pcol As LVCOLUMN) As Boolean
ListView_GetColumn = SendMessage(hWnd, LVM_GETCOLUMN, ByVal iCol, pcol)
End Function

Public Function ListView_SetColumn(hWnd As Long, iCol As Long, pcol As LVCOLUMN) As Boolean
ListView_SetColumn = SendMessage(hWnd, LVM_SETCOLUMN, ByVal iCol, pcol)
End Function

Public Function ListView_InsertColumn(hWnd As Long, iCol As Long, pcol As LVCOLUMN) As Long
ListView_InsertColumn = SendMessage(hWnd, LVM_INSERTCOLUMN, ByVal iCol, pcol)
End Function

Public Function ListView_DeleteColumn(hWnd As Long, iCol As Long) As Boolean
ListView_DeleteColumn = SendMessage(hWnd, LVM_DELETECOLUMN, ByVal iCol, 0)
End Function

Public Function ListView_GetColumnWidth(hWnd As Long, iCol As Long) As Long
ListView_GetColumnWidth = SendMessage(hWnd, LVM_GETCOLUMNWIDTH, ByVal iCol, 0)
End Function

Public Function ListView_SetColumnWidth(hWnd As Long, iCol As Long, cx As Long) As Boolean
ListView_SetColumnWidth = SendMessage(hWnd, LVM_SETCOLUMNWIDTH, ByVal iCol, ByVal MAKELPARAM(cx, 0))
End Function

#If (WIN32_IE >= &H300) Then

Public Function ListView_GetHeader(hWnd As Long) As Long
ListView_GetHeader = SendMessage(hWnd, LVM_GETHEADER, 0, 0)
End Function
'
#End If
thorkhan 2002-04-11
  • 打赏
  • 举报
回复
'// key flags stored in uKeyFlags
Public Enum NMITEMACTIVATE_uKeyFlags
LVKF_ALT = &H1
LVKF_CONTROL = &H2
LVKF_SHIFT = &H4
End Enum

#End If ' // WIN32_IE >= &H400

#If (WIN32_IE >= &H300) Then

'Public Type NMLVCUSTOMDRAW
' nmcd As NMCUSTOMDRAW
' clrText As Long
' clrTextBk As Long
'#If (WIN32_IE >= &H400) Then
' iSubItem As Long
'#End If ' // WIN32_IE >= &H400
'End Type

Public Type NMLVCACHEHINT
hdr As NMHDR
iFrom As Long
iTo As Long
End Type

Public Type NMLVFINDITEM ' was NM_LVFINDITEM
hdr As NMHDR
iStart As Long
lvfi As LVFINDINFO
End Type

Public Type NMODSTATECHANGE ' was NM_ODSTATECHANGE
hdr As NMHDR
iFrom As Long
iTo As Long
uNewState As Long
uOldState As Long
End Type

#End If ' // WIN32_IE >= &H300

Public Type NMLVDISPINFO ' was LV_DISPINFO
hdr As NMHDR
item As LVITEM
End Type

Public Type NMLVKEYDOWN ' was LV_KEYDOWN
hdr As NMHDR
wVKey As Integer ' can't be KeyCodeConstants, enums are Longs!
flags As Long ' Always zero.
End Type

#If (WIN32_IE >= &H400) Then

Public Type NMLVGETINFOTIP
hdr As NMHDR
dwFlags As Long
pszText As Long ' if String, must be pre-allocated
cchTextMax As Long
iItem As Long
iSubItem As Long
lParam As Long
End Type

' // NMLVGETINFOTIPA.dwFlag values ("A" ?)
Public Const LVGIT_UNFOLDED = &H1

#End If ' // WIN32_IE >= &H400
thorkhan 2002-04-11
  • 打赏
  • 举报
回复
Public Enum LVITEM_state
LVIS_FOCUSED = &H1
LVIS_SELECTED = &H2
LVIS_CUT = &H4
LVIS_DROPHILITED = &H8
LVIS_ACTIVATING = &H20

LVIS_OVERLAYMASK = &HF00
LVIS_STATEIMAGEMASK = &HF000
End Enum

Public Type LVFINDINFO ' was LV_FINDINFO
flags As LVFINDINFO_flags
psz As Long ' if String, must be pre-allocated
lParam As Long
pt As POINTAPI
vkDirection As Long
End Type

Public Enum LVFINDINFO_flags
LVFI_PARAM = &H1
LVFI_STRING = &H2
LVFI_PARTIAL = &H8
LVFI_WRAP = &H20
LVFI_NEARESTXY = &H40
End Enum

Public Type LVHITTESTINFO ' was LV_HITTESTINFO
pt As POINTAPI
flags As LVHITTESTINFO_flags
iItem As Long
#If (WIN32_IE >= &H300) Then
iSubItem As Long ' this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
#End If
End Type

Public Enum LVHITTESTINFO_flags
LVHT_NOWHERE = &H1 ' in LV client area, but not over item
LVHT_ONITEMICON = &H2
LVHT_ONITEMLABEL = &H4
LVHT_ONITEMSTATEICON = &H8
LVHT_ONITEM = (LVHT_ONITEMICON Or LVHT_ONITEMLABEL Or LVHT_ONITEMSTATEICON)

' outside the LV's client area
LVHT_ABOVE = &H8
LVHT_BELOW = &H10
LVHT_TORIGHT = &H20
LVHT_TOLEFT = &H40
End Enum

Public Type LVCOLUMN ' was LV_COLUMN
mask As LVCOLUMN_mask
fmt As LVCOLUMN_fmt
cx As Long
pszText As Long ' if String, must be pre-allocated
cchTextMax As Long
iSubItem As Long
#If (WIN32_IE >= &H300) Then
iImage As Long
iOrder As Long
#End If
End Type

Public Enum LVCOLUMN_mask
LVCF_FMT = &H1
LVCF_WIDTH = &H2
LVCF_TEXT = &H4
LVCF_SUBITEM = &H8
#If (WIN32_IE >= &H300) Then
LVCF_IMAGE = &H10
LVCF_ORDER = &H20
#End If
End Enum

Public Enum LVCOLUMN_fmt
LVCFMT_LEFT = &H0
LVCFMT_RIGHT = &H1
LVCFMT_CENTER = &H2
LVCFMT_JUSTIFYMASK = &H3
#If (WIN32_IE >= &H300) Then
LVCFMT_IMAGE = &H800
LVCFMT_BITMAP_ON_RIGHT = &H1000
LVCFMT_COL_HAS_IMAGES = &H8000&
#End If
End Enum

Public Enum LVM_SETCOLUMNWIDTH_lParam
LVSCW_AUTOSIZE = -1
LVSCW_AUTOSIZE_USEHEADER = -2
End Enum

#If (WIN32_IE >= &H300) Then
' // these flags only apply to LVS_OWNERDATA listviews in report or list mode
Public Enum LVM_SETITEMCOUNT_lParam
LVSICF_NOINVALIDATEALL = &H1
LVSICF_NOSCROLL = &H2
End Enum
#End If

#If (WIN32_IE >= &H300) Then
Public Enum LVM_SETEXTENDEDLISTVIEWSTYLE_lParam
LVS_EX_GRIDLINES = &H1
LVS_EX_SUBITEMIMAGES = &H2
LVS_EX_CHECKBOXES = &H4
LVS_EX_TRACKSELECT = &H8
LVS_EX_HEADERDRAGDROP = &H10
LVS_EX_FULLROWSELECT = &H20 ' // applies to report mode only
LVS_EX_ONECLICKACTIVATE = &H40
LVS_EX_TWOCLICKACTIVATE = &H80
#If (WIN32_IE >= &H400) Then
LVS_EX_FLATSB = &H100
LVS_EX_REGIONAL = &H200
LVS_EX_INFOTIP = &H400 ' listview does InfoTips for you
LVS_EX_UNDERLINEHOT = &H800
LVS_EX_UNDERLINECOLD = &H1000
LVS_EX_MULTIWORKAREAS = &H2000
#End If ' // WIN32_IE >= &H400
End Enum
#End If ' // WIN32_IE >= &H300

#If (WIN32_IE >= &H400) Then
Public Type LVBKIMAGE
ulFlags As LVBKIMAGE_ulFlags
hbm As Long
pszImage As Long ' if String, must be pre-allocated
cchImageMax As Long
xOffsetPercent As Long
yOffsetPercent As Long
End Type

Public Enum LVBKIMAGE_ulFlags
LVBKIF_SOURCE_NONE = &H0
LVBKIF_SOURCE_HBITMAP = &H1
LVBKIF_SOURCE_URL = &H2
LVBKIF_SOURCE_MASK = &H3
LVBKIF_STYLE_NORMAL = &H0
LVBKIF_STYLE_TILE = &H10
LVBKIF_STYLE_MASK = &H10
End Enum
#End If ' // WIN32_IE >= &H400

' ============================================
' Notifications

Public Enum LVNotifications
LVN_FIRST = -100& ' &HFFFFFF9C ' (0U-100U)
LVN_LAST = -199& ' &HFFFFFF39 ' (0U-199U)
' lParam points to:
LVN_ITEMCHANGING = (LVN_FIRST - 0) ' NMLISTVIEW, ?, rtn T/F
LVN_ITEMCHANGED = (LVN_FIRST - 1) ' NMLISTVIEW, ?
LVN_INSERTITEM = (LVN_FIRST - 2) ' NMLISTVIEW, iItem
LVN_DELETEITEM = (LVN_FIRST - 3) ' NMLISTVIEW, iItem
LVN_DELETEALLITEMS = (LVN_FIRST - 4) ' NMLISTVIEW, iItem = -1, rtn T/F

LVN_COLUMNCLICK = (LVN_FIRST - 8) ' NMLISTVIEW, iItem = -1, iSubItem = column
LVN_BEGINDRAG = (LVN_FIRST - 9) ' NMLISTVIEW, iItem
LVN_BEGINRDRAG = (LVN_FIRST - 11) ' NMLISTVIEW, iItem

#If (WIN32_IE >= &H300) Then
LVN_ODCACHEHINT = (LVN_FIRST - 13) ' NMLVCACHEHINT
LVN_ITEMACTIVATE = (LVN_FIRST - 14) ' v4.70 = NMHDR, v4.71 = NMITEMACTIVATE
LVN_ODSTATECHANGED = (LVN_FIRST - 15) ' NMLVODSTATECHANGE, rtn T/F
#End If ' // WIN32_IE >= &H300

#If (WIN32_IE >= &H400) Then
LVN_HOTTRACK = (LVN_FIRST - 21) ' NMLISTVIEW, see docs, rtn T/F
#End If

#If UNICODE Then
LVN_BEGINLABELEDIT = (LVN_FIRST - 75)
LVN_ENDLABELEDIT = (LVN_FIRST - 76)
LVN_GETDISPINFO = (LVN_FIRST - 77)
LVN_SETDISPINFO = (LVN_FIRST - 78)

#If (WIN32_IE >= &H300) Then
LVN_ODFINDITEM = (LVN_FIRST - 79) ' NMLVFINDITEM
#End If ' (WIN32_IE >= &H300)

#If (WIN32_IE >= &H400) Then
LVN_GETINFOTIP = (LVN_FIRST - 58) ' NMLVGETINFOTIP
#End If ' (WIN32_IE >= &H400)

#Else
LVN_BEGINLABELEDIT = (LVN_FIRST - 5) ' NMLVDISPINFO, iItem, rtn T/F
LVN_ENDLABELEDIT = (LVN_FIRST - 6) ' NMLVDISPINFO, see docs
LVN_GETDISPINFO = (LVN_FIRST - 50) ' NMLVDISPINFO, see docs
LVN_SETDISPINFO = (LVN_FIRST - 51) ' NMLVDISPINFO, see docs

#If (WIN32_IE >= &H300) Then
LVN_ODFINDITEM = (LVN_FIRST - 52) ' NMLVFINDITEM
#End If ' (WIN32_IE >= &H300)

#If (WIN32_IE >= &H400) Then
LVN_GETINFOTIP = (LVN_FIRST - 57) ' NMLVGETINFOTIP
#End If ' (WIN32_IE >= &H400)

#End If ' UNICODE

LVN_KEYDOWN = (LVN_FIRST - 55) ' NMLVKEYDOWN

#If (WIN32_IE >= &H300) Then
LVN_MARQUEEBEGIN = (LVN_FIRST - 56) ' NMLISTVIEW, rtn T/F
#End If

End Enum ' LVNotifications

Public Type NMLISTVIEW ' was NM_LISTVIEW
hdr As NMHDR
iItem As Long
iSubItem As Long
uNewState As LVITEM_state
uOldState As LVITEM_state
uChanged As LVITEM_mask
ptAction As POINTAPI
lParam As Long
End Type

#If (WIN32_IE >= &H400) Then

'// NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
'// therefore all the fields are the same except for extra uKeyFlags
'// they are used to store key flags at the time of the single click with
'// delayed activation - because by the time the timer goes off a user may
'// not hold the keys (shift, ctrl) any more
Public Type NMITEMACTIVATE
hdr As NMHDR
iItem As Long
iSubItem As Long
uNewState As Long
uOldState As Long
uChanged As Long
ptAction As POINTAPI
lParam As Long
uKeyFlags As Long
End Type
内容概要:本文系统介绍了C语言在底层系统编程与数据结构工程化实现中的核心技术,同时融合了现代Web开发中TypeScript类型系统与全栈项目架构设计。C语言部分聚焦操作系统接口调用、内存管理、文件操作与进程控制,深入讲解指针、动态内存分配、结构体与位运算,并通过实现简易shell、日志系统等工具强化实践能力;数据结构部分涵盖链表、栈、队列、哈希表、二叉树与图结构的C语言实现,结合时间与空间复杂度分析,应用于缓存系统、路径搜索等实际场景,并引入内存池优化频繁分配问题。TypeScript部分强调静态类型在提升代码可靠性中的作用,讲解基础类型、泛型、交叉与联合类型、条件类型等,并通过DTO与接口类型保障前后端数据一致性。全栈项目基于React/Vue + Node.js架构,实现RESTful API、JWT认证、统一响应结构,并结合ORM进行数据库操作,完成用户系统、权限管理与任务管理系统等实战项目。同时强调工程化建设,包括代码规范、单元测试、CI/CD及Docker容器化部署。; 适合人群:具备C语言和JavaScript基础,有一定编程经验,希望深入系统编程或向全栈工程师发展的1-3年开发者;; 使用场景及目标:①掌握C语言在系统级开发中的核心应用,如内存管理与系统调用;②实现常用数据结构并应用于工程场景;③构建类型安全的全栈项目,提升前后端协同开发效率;④建立完整的软件工程化能力体系; 阅读建议:学习过程中应结合代码实践,动手实现各类数据结构与系统工具,同步搭建全栈项目,配置工程化工具链,注重理论与实际项目的深度融合。
内容概要:本文介绍了脚本自动化运维在芯片行业中应用于EDA工具链的实战项目,重点解决工具配置、许可证管理与仿真任务调度等效率瓶颈问题。通过构建Bash与Python混合的自动化脚本系统,实现License动态调度、仿真任务并行化、断点续跑及版本兼容性处理,显著提升资源利用率与设计效率。典型案例如License调度脚本通过监控进程活跃度回收闲置许可,结合Flask API实现服务化查询与CI/CD集成,使工程师等待时间从4小时降至15分钟,License利用率提升至89%,并在7nm GPU项目中节约千万级成本。文章还展望了多云调度、AI预测与开源EDA适配等未来方向。; 适合人群:芯片设计工程师、EDA工具运维人员、自动化脚本开发者,以及具备Python/Bash基础的半导体行业技术人员;; 使用场景及目标:①优化高成本EDA许可证的分配与回收,提升资源利用率;②实现大规模仿真任务的自动编排与容错执行;③将自动化脚本嵌入CI/CD流程,支撑高频次验证与签核需求;④降低流片周期与研发成本,加速国产芯片研发进程; 阅读建议:此资源强调工程实践与系统思维的结合,建议读者在掌握基本脚本语法基础上,重点关注异常处理、权限控制、日志审计等生产级设计细节,并尝试将其方案迁移至实际EDA流程中进行调试与优化。
内容概要:本文档整合《六韬》兵法智慧,构建了一套适用于现代团队管理的“五维战力提升模型”,涵盖骨干识别激励(武锋)、战术灵活运用(林战)、团队凝聚力训练(分合)、人才选拔标准(选练)与培训落地体系(教战)五大模块。通过35天系统化实战路径、15个实用工具模板、五维诊断评估及身体锚点仪式,帮助管理者诊断团队短板,逐步建立科学化、可复制的团队战力建设体系,解决骨干流失、培训失效、战术僵化等常见管理难题,并辅以韩信点兵、赵括纸上谈兵等历史案例增强理解。; 适合人群:具备一定团队管理经验,面临骨干识别难、培训落地难、团队协同弱等问题的基层及中层管理者,尤其适合10人以上团队负责人;小团队也可根据实际情况简化使用。; 使用场景及目标:①用于系统诊断并改善团队在激励、分工、选拔、培训等方面的薄弱环节;②指导管理者按照35天路径逐步实施变革,实现团队战力的整体跃升;③结合历史案例与工具模板,提升管理决策的深度与执行力。; 阅读建议:建议用户先完成五维诊断,锁定最需改进的1-2个维度优先突破,不必强求一次性执行全部模块;所有工具均可直接套用,配合每日实操动作与身体锚点仪式强化执行惯性,同时可联动其他管理资源包(如立将威信术、决策领导力三合包)形成完整管理体系。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧