cImageList.cls
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:6k
源码类别:

浏览器

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cImageList"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. '---------------------------------------------------------------------------------------
  15. ' Module    : cImageList
  16. ' DateTime  : 2005-3-12 12:49
  17. ' Author    : Lingll
  18. ' Purpose   :
  19. '    2005-3-12 添加了 AddIcon function'
  20. '    2005-3-14 添加了 Create function
  21. '    2005-3-28 添加了 GetIcon function
  22. '              添加 Share变量,控制结束时是否destroy imagelist
  23. '---------------------------------------------------------------------------------------
  24. Option Explicit
  25. Private Declare Function GetWindowRect Lib "user32" (ByVal Hwnd As Long, lpRect As RECT) As Long
  26. Private Type RECT
  27.     Left As Long
  28.     Top As Long
  29.     Right As Long
  30.     Bottom As Long
  31. End Type
  32. Private Const ILC_COLOR8 = &H8&
  33. Private Declare Function ImageList_Create Lib "comctl32" (ByVal cx As Long, ByVal cy As Long, ByVal flags As Long, ByVal cInitial As Long, ByVal cGrow As Long) As Long
  34. Private Declare Function ImageList_ReplaceIcon Lib "comctl32" (ByVal himl As Long, ByVal i As Long, ByVal hIcon As Long) As Long
  35. Private Declare Function ImageList_AddMasked Lib "comctl32.dll" (ByVal himl As Long, ByVal hbmImage As Long, ByVal crMask As Long) As Long
  36. Private Declare Function ImageList_Destroy Lib "comctl32.dll" (ByVal himl As Long) As Long
  37. Private Declare Function ImageList_LoadImage Lib "comctl32.dll" (ByVal hi As Long, ByVal lpbmp As String, ByVal cx As Long, ByVal cGrow As Long, ByVal crMask As Long, ByVal uType As Long, ByVal uFlags As Long) As Long
  38. Private Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl As Long, ByVal i As Long, ByVal hdcdst As Long, ByVal x As Long, ByVal y As Long, ByVal fStyle As Long) As Long
  39. Private Declare Function ImageList_BeginDrag Lib "comctl32.dll" (ByVal himlTrack As Long, ByVal iTrack As Long, ByVal dxHotspot As Long, ByVal dyHotspot As Long) As Long
  40. Private Declare Function ImageList_DragEnter Lib "comctl32.dll" (ByVal hwndLock As Long, ByVal x As Long, ByVal y As Long) As Long
  41. Private Declare Function ImageList_DragLeave Lib "comctl32.dll" (ByVal hwndLock As Long) As Long
  42. Private Declare Function ImageList_DragMove Lib "comctl32.dll" (ByVal x As Long, ByVal y As Long) As Long
  43. Private Declare Sub ImageList_EndDrag Lib "comctl32.dll" ()
  44. Private Declare Function ImageList_GetIcon Lib "comctl32.dll" (ByVal himl As Long, ByVal i As Long, ByVal flags As Long) As Long
  45. Private Const CLR_NONE As Long = &HFFFFFFFF
  46. Private Const IMAGE_BITMAP As Long = 0
  47. Private Const LR_COLOR As Long = &H2
  48. Private Const LR_COPYDELETEORG As Long = &H8
  49. Private Const LR_COPYFROMRESOURCE As Long = &H4000
  50. Private Const LR_COPYRETURNORG As Long = &H4
  51. Private Const LR_CREATEDIBSECTION As Long = &H2000
  52. Private Const LR_DEFAULTCOLOR As Long = &H0
  53. Private Const LR_DEFAULTSIZE As Long = &H40
  54. Private Const LR_LOADFROMFILE As Long = &H10
  55. Private Const LR_LOADMAP3DCOLORS As Long = &H1000
  56. Private Const LR_LOADTRANSPARENT As Long = &H20
  57. Private Const LR_MONOCHROME As Long = &H1
  58. Private Const LR_SHARED As Long = &H8000
  59. Private Const LR_VGACOLOR As Long = &H80
  60. Private Const ILD_BLEND25 As Long = &H2
  61. Private Const ILD_BLEND50 As Long = &H4
  62. Private Const ILD_BLEND As Long = ILD_BLEND50
  63. Private Const ILD_FOCUS As Long = ILD_BLEND25
  64. Private Const ILD_IMAGE As Long = &H20
  65. Private Const ILD_MASK As Long = &H10
  66. Private Const ILD_NORMAL As Long = &H0
  67. Private Const ILD_OVERLAYMASK As Long = &HF00
  68. Private Const ILD_ROP As Long = &H40
  69. Private Const ILD_SELECTED As Long = ILD_BLEND50
  70. Private Const ILD_TRANSPARENT As Long = &H1
  71. Private Const ILC_COLORDDB As Long = &HFE
  72. Private Const ILC_MASK As Long = &H1
  73. 'Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
  74. 'Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  75. '
  76. Private Declare Function DestroyIcon Lib "user32.dll" (ByVal hIcon As Long) As Long
  77. Dim mIList As Long
  78. '是否共享
  79. Public Share As Boolean
  80. Public Sub LoadImageList_File(nfile$, cx&, cy&, Optional vMskClr = &HFF00FF)
  81. LoadImageList_Object LoadPicture(nfile).handle, cx, cy, vMskClr
  82. End Sub
  83. Public Sub LoadImageList_Object(vBmpHandel&, cx&, cy&, Optional vMskClr = &HFF00FF)
  84. Call Class_Terminate
  85. mIList = ImageList_Create(cx, cy, ILC_COLORDDB Or ILC_MASK, 0, 1)
  86. ImageList_AddMasked mIList, vBmpHandel, vMskClr
  87. End Sub
  88. Public Sub Create(cx&, cy&)
  89. Call Class_Terminate
  90. mIList = ImageList_Create(cx, cy, ILC_COLORDDB Or ILC_MASK, 0, 1)
  91. End Sub
  92. Public Function AddIcon(vHicon&, Optional vAutoDestroy As Boolean = False) As Long
  93. 'Debug.Print "addicon", vHicon
  94. If vHicon <> 0 Then
  95.     AddIcon = ImageList_ReplaceIcon(mIList, -1, vHicon)
  96.     If vAutoDestroy Then
  97.         Call DestroyIcon(vHicon)
  98.     End If
  99. Else
  100.     AddIcon = -1
  101. End If
  102. End Function
  103. '---------------------------------------------------------------------------------------
  104. ' Procedure : GetIcon
  105. ' DateTime  : 2005-3-28 15:59
  106. ' Author    : Lingll
  107. ' Purpose   :
  108. '---------------------------------------------------------------------------------------
  109. Public Function GetIcon(iIcon&) As Long
  110. If mIList <> 0 Then
  111.     GetIcon = ImageList_GetIcon(mIList, iIcon, ILD_TRANSPARENT)
  112. End If
  113. End Function
  114. Public Property Get Hwnd() As Long
  115. Hwnd = mIList
  116. End Property
  117. Public Sub Draw(hdcdst&, i&, x&, y&)
  118. ImageList_Draw mIList, i, hdcdst, x, y, ILD_TRANSPARENT
  119. End Sub
  120. Private Sub Class_Terminate()
  121. If mIList <> 0 Then
  122.     If Share Then
  123.     Else
  124.         ImageList_Destroy mIList
  125.     End If
  126.     mIList = 0
  127. End If
  128. End Sub
  129. Public Sub Drag_Begin(iTrack&, dx&, dy&, hwndLock&)
  130. Dim tRc As RECT
  131. GetWindowRect hwndLock, tRc
  132. Call ImageList_BeginDrag(mIList, iTrack, tRc.Left, tRc.Top)
  133. Call ImageList_DragEnter(hwndLock, dx, dy)
  134. End Sub
  135. Public Sub Drag_Move(x&, y&)
  136. Call ImageList_DragMove(x, y)
  137. End Sub
  138. Public Sub Drag_End()
  139. Call ImageList_EndDrag
  140. End Sub