'以下是类的代码
'这个类的作用是给控件添加提示信息。
'类的名称newToolTip
Option Explicit Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) 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 GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Const WM_USER = &H400
Private Const CW_USEDEFAULT = &H80000000
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const TTS_NOPREFIX = &H2
Private Const TTF_TRANSPARENT = &H100
Private Const TTF_CENTERTIP = &H2
Private Const TTM_ADDTOOLA = (WM_USER + 4)
Private Const TTM_ACTIVATE = (WM_USER + 1)
Private Const TTM_UPDATETIPTEXTA = (WM_USER + 12)
Private Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)
Private Const TTM_SETTITLE = (WM_USER + 32)
Private Const TTS_BALLOON = &H40
Private Const TTF_SUBCLASS = &H10
Private Const TOOLTIPS_CLASSA = "tooltips_class32"
Private Type TOOLINFO
lSize As Long
lFlags As Long
lHwnd As Long
lId As Long
lpRect As RECT
hInstance As Long
lpStr As String
lParam As Long
End Type
Private TTTitle As String
Private TTParentControl As Object
Public Enum TTStyleEnum
TTStandard
TTBalloon
End Enum
Private TTStyle As TTStyleEnum
Private hToolTipHwnd As Long
Private TI As TOOLINFO Public Function Create() As Boolean
Dim lpRect As RECT
DestroyWindow hToolTipHwnd
hToolTipHwnd = CreateWindowEx(0, TOOLTIPS_CLASSA, vbNullString, TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, TTParentControl.hwnd, 0, App.hInstance, 0)
GetClientRect TTParentControl.hwnd, lpRect
With TI
.lFlags = TTF_SUBCLASS
.lHwnd = TTParentControl.hwnd
.lId = 0
.hInstance = App.hInstance
.lpRect = lpRect
End With
SendMessage hToolTipHwnd, TTM_ADDTOOLA, 0, TI
SendMessage hToolTipHwnd, TTM_SETTITLE, 0, ByVal TTTitle
End Function Public Property Set ParentControl(ByVal vData As Object)
Set TTParentControl = vData
End Property Public Property Let ToolTipTitle(ByVal vData As String)
TTTitle = vData
SendMessage hToolTipHwnd, TTM_SETTITLE, 0, ByVal TTTitle
End Property Public Property Let ToolTipText(ByVal vData As String)
TI.lpStr = vData
SendMessage hToolTipHwnd, TTM_UPDATETIPTEXTA, 0, TI
End Property
'以下是窗口的代码,窗口名称Form1,窗口上放置一个按钮控件,名称Command1
Option Explicit Dim tooltip As New newToolTip Private Sub Form_Load()
Set tooltip.ParentControl = Me.Command1
tooltip.ToolTipTitle = "提示"
tooltip.ToolTipText = "提示文本"
tooltip.Create
End Sub 这个类的代码是我引用别人的,还没有好好的研究过,所有碰到问题也想不出什么好的方法。我碰到的问题是,在VB中运行,将鼠标放到按钮上,能够正常显示提示信息。如果生成EXE文件独立运行,提示信息就没有了。请各位帮忙看看,谢谢了。
'这个类的作用是给控件添加提示信息。
'类的名称newToolTip
Option Explicit Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) 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 GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Const WM_USER = &H400
Private Const CW_USEDEFAULT = &H80000000
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const TTS_NOPREFIX = &H2
Private Const TTF_TRANSPARENT = &H100
Private Const TTF_CENTERTIP = &H2
Private Const TTM_ADDTOOLA = (WM_USER + 4)
Private Const TTM_ACTIVATE = (WM_USER + 1)
Private Const TTM_UPDATETIPTEXTA = (WM_USER + 12)
Private Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)
Private Const TTM_SETTITLE = (WM_USER + 32)
Private Const TTS_BALLOON = &H40
Private Const TTF_SUBCLASS = &H10
Private Const TOOLTIPS_CLASSA = "tooltips_class32"
Private Type TOOLINFO
lSize As Long
lFlags As Long
lHwnd As Long
lId As Long
lpRect As RECT
hInstance As Long
lpStr As String
lParam As Long
End Type
Private TTTitle As String
Private TTParentControl As Object
Public Enum TTStyleEnum
TTStandard
TTBalloon
End Enum
Private TTStyle As TTStyleEnum
Private hToolTipHwnd As Long
Private TI As TOOLINFO Public Function Create() As Boolean
Dim lpRect As RECT
DestroyWindow hToolTipHwnd
hToolTipHwnd = CreateWindowEx(0, TOOLTIPS_CLASSA, vbNullString, TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, TTParentControl.hwnd, 0, App.hInstance, 0)
GetClientRect TTParentControl.hwnd, lpRect
With TI
.lFlags = TTF_SUBCLASS
.lHwnd = TTParentControl.hwnd
.lId = 0
.hInstance = App.hInstance
.lpRect = lpRect
End With
SendMessage hToolTipHwnd, TTM_ADDTOOLA, 0, TI
SendMessage hToolTipHwnd, TTM_SETTITLE, 0, ByVal TTTitle
End Function Public Property Set ParentControl(ByVal vData As Object)
Set TTParentControl = vData
End Property Public Property Let ToolTipTitle(ByVal vData As String)
TTTitle = vData
SendMessage hToolTipHwnd, TTM_SETTITLE, 0, ByVal TTTitle
End Property Public Property Let ToolTipText(ByVal vData As String)
TI.lpStr = vData
SendMessage hToolTipHwnd, TTM_UPDATETIPTEXTA, 0, TI
End Property
'以下是窗口的代码,窗口名称Form1,窗口上放置一个按钮控件,名称Command1
Option Explicit Dim tooltip As New newToolTip Private Sub Form_Load()
Set tooltip.ParentControl = Me.Command1
tooltip.ToolTipTitle = "提示"
tooltip.ToolTipText = "提示文本"
tooltip.Create
End Sub 这个类的代码是我引用别人的,还没有好好的研究过,所有碰到问题也想不出什么好的方法。我碰到的问题是,在VB中运行,将鼠标放到按钮上,能够正常显示提示信息。如果生成EXE文件独立运行,提示信息就没有了。请各位帮忙看看,谢谢了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货