问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

?为何listbox控件中没有Tooltip属性?

发布网友 发布时间:2024-07-03 09:33

我来回答

2个回答

热心网友 时间:2024-07-14 09:01

(1)

Const LB_GETITEMHEIGHT = &H1A1

HeightLst = SendMessage(List1.hWnd, LB_GETITEMHEIGHT, 0, 0) '得到List每项的高度,单位为像素

(2)函数获取当前鼠标所在List的哪一项

Friend Function ListIndex(ByVal lY As Single, ByVal ListCount As Integer) As Integer

    Dim i%

    '当前项为最顶部显示的第一项 + 鼠标所在的第n项

    i = List1.TopIndex + (lY \ Screen.TwipsPerPixelY \ HeightLst)

    If i > ListCount - 1 Or ListCount = 0 Then i = -1

    ListIndex = i

End Function


(3)在List的MouseMove事件检查文本长度,若超过控件宽度,设置ToolTip值 

Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim lIndex% '鼠标当前指向的索引

    Static preIndex& '保留前次索引

    

    lIndex = ListIndex(Y, List1.ListCount)


        If lIndex >= 0 Then

            Dim TextSize As POINTAPI

            Dim lstRec As RECT

            '获取list窗口位置

            GetWindowRect List1.hWnd, lstRec

            '获取当前文本长度

            GetTextExtentPoint32 Me.hdc, List1.List(lIndex), LenB(List1.List(lIndex)), TextSize

            

            '如果文本太长不够显示就出现tip

            If TextSize.X >= List1.Width Then

                List1.TooltipText=cstr(Now)

            Else

                List1.TooltipText=""

            End If

            

        End If

End Sub


'相关API和结构定义
Const LB_ITEMFROMPOINT = &H1A9
Const LB_GETITEMHEIGHT = &H1A1
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As POINTAPI) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Type POINTAPI
        x As Long
        y As Long
End Type

热心网友 时间:2024-07-14 09:05

用API可以改变其宽度
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
U盘更新专用需要电脑打开怎么让我的U盘和电脑文件夹同步更新啊_百度知 ... 为什么我的硬盘一打开就弹出对话框说选择打开方式. 倒霉的是右键也打... 磁盘右键是打开方式怎么办 我双机盘符总是打开 打开方式 让我选择,右健第一项是打开.不知道是中了... 罗技Lightspeed怎么用? 罗技无线鼠标怎么样?怎么连接电脑使用? 为什么不建议去融资公司上班 融资担保公司一般账务处理及所涉及的会计科目有哪些 月经期间可以游泳吗 经期能不能游泳 [电影质感系列]特种部队电影版角色:蛇眼,白幽灵 {dede:pagelist listitem="info,index,end,pre,next,pageno,option" li... 特种部队蛇眼起源结局 特种部队蛇眼起源剧情介绍 can't find bean preIndexForm in any scope 如何将DataGridView里的某行数据显示到相应的TextBox里? 为什么有些事情想铭记在心,却慢慢忘却;而想忘记的事却忘不掉? 为什么你想刻意去忘记一些事的时候忘不了 而且越来越清楚 ~~~ 越是想要忘掉某些事,越是忘不掉!怎么回事? 诛仙手游体验服9月27日更新公告介绍_诛仙手游体验服9月27日更新公告是... 诛仙手游全国玩家见面会活动即将启动 仙缘聚首只等你来 一部破事精英让玩家纷纷赴约梦幻新诛仙,只为找回曾经的游戏好友 借条上没写还款日期担保人过期吗? 篮球鞋打折是怎麼一回事? 借条没有还款日期担保人有效期多长时间 借条没有约定还款日期担保人担保时效怎么算 借条没写日期担保人担保期限是多久 过孔滑环厂家 大放血是什么意思? 视频为什么没有推荐? 为什么我的视频号没有热门推送? <li>{dede:pagelist listitem="index,end,pre,next,pageno"listsize=... 织梦5.7列表页{dede:pagelist listitem="info,index,end,pre,next,page... 最近一个月有时早上起床胃疼,一阵阵得,平时也会好好得就难受,食欲不振... 不管是夫妻还是情人,想要长长久久,就得做到哪几点呢? 没工资的试用期合法吗 没工资的试用期合不合法 ...开始下地走路,患肢着地使不上劲,总感觉没力量,该怎么办 感觉我司的会员积分没啥存在感,请问会员积分应该... 网上买了件毛呢大衣,收到货了,感觉可以,就是尺码有点大了,,, 席殊书屋席殊好书俱乐部 520京东A+会员购iPhone14 Pro Max能省1500元,价保618是真是假? 乙肝核心抗体说明 我是外地户口,能到上海读小学六年级吗? 在转正后可以辞退员工吗 体育单招学校名单 体育单招的学校有哪些 华为最新手机排行榜前十名关于华为最建议买的手机 华为p50pro报价 电热水袋里面装的是什么呢? 品质好的大虾有哪些特点? 公司分立税费应该如何处理