VFB组件:ListBox控件(列表框)

这是操作系统提供的控件,简单点,就是显示一个列表。系统同时提供强大的自画功能

 可以由自己代码画出自己想要的任何东西,比方上面显示的控件属性列表,就是 ListBox控件

常用事件:

常用代码:

 

 进阶用法,自绘 

在事件中,每次需要显示一条项目时,就是一个列表,就有一个事件,然后你负责画。

单独但是当没有显示的空白地方,需要填充空白,我们需要这样写,这是常态,复制代码即可。

Function Form1_List1_Custom(hWndForm As hWnd ,hWndControl As hWnd ,wMsg As UInteger ,wParam As wParam ,lParam As lParam) As LResult
   Select Case wMsg
      Case WM_ERASEBKGND
         Dim n As HDC = Cast(HDC ,wParam)
         Dim As Long ww ,hh ,h ,y ,u ,ki ,pi ,ti
         FF_Control_GetSize hWndControl ,ww ,hh
         h  = List1.ItemHeight
         ki = List1.TopIndex
         u  = List1.ListCount
         pi = List1.ListIndex
         y  = (u - ki) * h '内容显示高度
         If y < hh Then '内容高度小于控件内容
            '画内容之外
            hh -= y
            Dim gg As yGDI = yGDI(n ,0 ,0 ,y ,ww ,hh)
            gg.Pen 0 ,0
            gg.Brush &HFFFFFF 'GDI的颜色值。RGB=255,255,255
            gg.DrawFrame 0 ,0 ,ww ,hh
         End If
         Return True '防止擦除背景,不加这个会闪的。
   End Select
   Function = False ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。
   
End Function
Function Form1_List1_OwnerDraw(hWndForm As hWnd, hWndControl As hWnd, lpdis As DRAWITEMSTRUCT ) As LResult  '自绘控件(需要设计时选择自绘属性)
   Dim rc As Rect
   If lpdis.itemID = &HFFFFFFFF Then Return 0 '如果列表为空 =-1
   rc = lpdis.rcItem  '当前行绘画范围,多余操作,就是嫌弃 lpdis.rcItem 太长,
   Select Case lpdis.itemAction
      Case ODA_DRAWENTIRE, ODA_SELECT '要绘画消息
         If (lpdis.itemState And ODS_SELECTED) = 0 Then                  ' 未选中
            FillRect lpdis.hDC, @rc, GetSysColorBrush(COLOR_WINDOW)     ' 画背景,填充底色
            SetTextColor lpdis.hDC, GetSysColor(COLOR_WINDOWTEXT)       ' 文本颜色
         Else                                                             ' 处于选中状态
            FillRect lpdis.hDC, @rc, GetSysColorBrush(COLOR_HIGHLIGHT)  ' 画背景,填充底色
            SetTextColor lpdis.hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)    ' 文本颜色
         End If
         rc.Left += AfxScaleX(3)  '让文本偏一点,不然太靠左边了
         '显示名称
         SetBkMode lpdis.hDC, 1  '设置这个后,画上的字是透明的
         '显示文字色
            SetTextColor lpdis.hDC, 色
            DrawTextW lpdis.hDC, 文字, Len(bb), @rc, DT_CENTER Or DT_VCENTER Or DT_SINGLELINE
         End If
         Function = True '告诉系统,表示自己画了,不需要系统处理
   End Select
End Function

这里只是基本画法,需要什么 UI ,全靠自己画。

VFB的这里就是 这个控件自己画的

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值