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

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mListHBar"
  2. Option Explicit
  3. Private Type nFont
  4.     name As String
  5.     size As Currency
  6.     bold As Boolean
  7.     italic As Boolean
  8. End Type
  9. Private Type RECT
  10.     Left As Long
  11.     Top As Long
  12.     Right As Long
  13.     Bottom As Long
  14. End Type
  15. Private Declare Function DrawText Lib "user32" Alias "DrawTextA" _
  16.         (ByVal hdc As Long, _
  17.         ByVal lpStr As String, _
  18.         ByVal nCount As Long, _
  19.         lpRect As RECT, _
  20.         ByVal wFormat As Long) As Long
  21. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  22.         (ByVal hwnd As Long, _
  23.         ByVal wMsg As Long, _
  24.         ByVal wParam As Long, _
  25.         lParam As Any) As Long
  26. Private Const LB_SETHORIZONTALEXTENT = &H194
  27. Private Const DT_CALCRECT = &H400
  28. Private Function ListTextWidth(ByRef lstThis As ListBox) As Long
  29.     Dim i As Long
  30.     Dim tR As RECT
  31.     Dim lW As Long
  32.     Dim lWidth As Long
  33.     Dim lHDC As Long
  34.     Dim oFont As nFont
  35.     
  36.     With lstThis.Parent.Font
  37.         oFont.name = .name
  38.         oFont.size = .size
  39.         oFont.bold = .bold
  40.         oFont.italic = .italic
  41.         
  42.         .name = lstThis.Font.name
  43.         .size = lstThis.Font.size
  44.         .bold = lstThis.Font.bold
  45.         .italic = lstThis.Font.italic
  46.     End With
  47.     
  48.     lHDC = lstThis.Parent.hdc
  49.     
  50.     '便历所有的列表项以找到最长的项
  51.     For i = 0 To lstThis.ListCount - 1
  52.         DrawText lHDC, lstThis.List(i), -1, tR, DT_CALCRECT
  53.         lW = tR.Right - tR.Left + 4
  54.         If (lW > lWidth) Then
  55.             lWidth = lW
  56.         End If
  57.     Next i
  58.         
  59.     '返回最长列表项的长度(像素)
  60.     ListTextWidth = lWidth
  61.     
  62.     With lstThis.Parent.Font
  63.         .name = oFont.name
  64.         .size = oFont.size
  65.         .bold = oFont.bold
  66.         .italic = oFont.italic
  67.     End With
  68. End Function
  69. Public Sub Show_Listbox_HScrollebar(nListbox As ListBox)
  70.     Dim lstLength As Long
  71.     lstLength = ListTextWidth(nListbox)
  72.     SendMessage nListbox.hwnd, LB_SETHORIZONTALEXTENT, lstLength, 0
  73. End Sub