Вывести Tooltip на Screen (X,Y -известны) из кода. - VB
Формулировка задачи:
Срочно нужны специалисты по ToolTip.
Есть класс CTooltip.cls
Позаимствованный когда-то с этого форума (приложу его на всякий случай).
Мне надо (из кода, без елозанья мышкой по объекту) сходу вывести ToolTip на объект Screen.
Будем считать что координаты (X, Y) куда примерно надо выводить известны.
напр. реальные значения в районе трея (1136,1004); (1140,999).
Если я например делаю так (тест задача - чтоб он
Я ожидал
нажали на Command2 -сразу где-то над Text1 появился Tooltip
На деле выходит:
нажали на Command2 -фига
А на Screen вообще не знаю как.
Т.е. первая задача:
В приложенном классе ф-ция Create имеет вид:
Данная задача является подзадачей
Shell_NotifyIcon + Ballon(?) Tooltip
Прошу помочь.
C Tooltip до сих пор довольствовался приложенным классом и мне этого хватало.
К сожалению тему Tooltip сильно не копал.
Есть класс CTooltip.cls
Позаимствованный когда-то с этого форума (приложу его на всякий случай).
Мне надо (из кода, без елозанья мышкой по объекту) сходу вывести ToolTip на объект Screen.
Будем считать что координаты (X, Y) куда примерно надо выводить известны.
напр. реальные значения в районе трея (1136,1004); (1140,999).
Если я например делаю так (тест задача - чтоб он
сразу
появился над Text1)Я ожидал
нажали на Command2 -сразу где-то над Text1 появился Tooltip
На деле выходит:
нажали на Command2 -фига
потом
поелозили по Text1 -он появился (в месте где елозили)А на Screen вообще не знаю как.
Т.е. первая задача:
Как из кода сразу вывести Tooltip (пусть пока любой) на Screen (ну пусть пока в любое место)?
В приложенном классе ф-ция Create имеет вид:
Данная задача является подзадачей
Shell_NotifyIcon + Ballon(?) Tooltip
Прошу помочь.
C Tooltip до сих пор довольствовался приложенным классом и мне этого хватало.
К сожалению тему Tooltip сильно не копал.
Решение задачи: «Вывести Tooltip на Screen (X,Y -известны) из кода.»
textual
Листинг программы
Attribute VB_Name = "Module1" Option Explicit 'Initialization of New ClassNames Public Const ICC_BAR_CLASSES = &H4 'toolbar, statusbar, trackbar, tooltips Private Declare Sub InitCommonControls Lib "comctl32.dll" () Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (lpInitCtrls As tagINITCOMMONCONTROLSEX) As Boolean Type tagINITCOMMONCONTROLSEX dwSize As Long ' size of this structure dwICC As Long ' flags indicating which classes to be initialized. End Type ' ToolTip Styles Public Const TTS_ALWAYSTIP = &H1 Public Const TTS_NOPREFIX = &H2 Public Const TTS_BALLOON = &H40 ' comctl32.dll v5.8 require Public Const CW_USEDEFAULT = &H80000000 Public Const WS_POPUP = &H80000000 Public Const WM_USER = &H400 ' ToolTip Messages Public Const TTM_SETDELAYTIME = (WM_USER + 3) Public Const TTM_ADDTOOL = (WM_USER + 4) Public Const TTM_SETTIPBKCOLOR = (WM_USER + 19) Public Const TTM_SETTIPTEXTCOLOR = (WM_USER + 20) Public Const TTM_SETMAXTIPWIDTH = (WM_USER + 24) Public Const TTDT_AUTOPOP = 2 Public Const TTDT_INITIAL = 3 Public Const TTF_IDISHWND = &H1 Public Const TTF_CENTERTIP = &H2 Public Const TTF_SUBCLASS = &H10 Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Type TOOLINFO cbSize As Long uFlags As Long hwnd As Long uId As Long cRect As RECT hinst As Long lpszText As String End Type Public 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 Public Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public bCreated As Boolean, hTT As Long Public hCreated() As Long Public Sub CreateTTWindow(hParent As Long, Optional bBalloon As Boolean = False) Dim h As Long, lStyle As Long lStyle = TTS_NOPREFIX Or TTS_ALWAYSTIP If bBalloon Then lStyle = lStyle Or TTS_BALLOON hTT = CreateWindowEx(0, "tooltips_class32", 0, lStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hParent, 0, App.hInstance, 0) If Not bCreated Then ReDim hCreated(0) bCreated = True Else ReDim Preserve hCreated(UBound(hCreated) + 1) End If hCreated(UBound(hCreated)) = hTT End Sub Public Sub SetToolTip(objTT As Object, sTipText As String, _ Optional BkColor As Long = &HEEFFFF, _ Optional TxtColor As Long = vbBlack, _ Optional MaxWidth As Long = 300, _ Optional DelayTime As Long = 500, _ Optional VisibleTime As Long = 2000, _ Optional bCenter As Boolean = False) Dim TI As TOOLINFO With TI GetClientRect objTT.hwnd, .cRect .hwnd = objTT.hwnd .uFlags = TTF_IDISHWND Or TTF_SUBCLASS If bCenter Then .uFlags = .uFlags Or TTF_CENTERTIP End If .uId = objTT.hwnd .lpszText = sTipText .cbSize = Len(TI) End With SendMessageLong hTT, TTM_SETMAXTIPWIDTH, 0, MaxWidth SendMessageLong hTT, TTM_SETDELAYTIME, TTDT_INITIAL, DelayTime SendMessageLong hTT, TTM_SETDELAYTIME, TTDT_AUTOPOP, VisibleTime SendMessageLong hTT, TTM_SETTIPTEXTCOLOR, TxtColor, 0& SendMessageLong hTT, TTM_SETTIPBKCOLOR, BkColor, 0& SendMessage hTT, TTM_ADDTOOL, 0, TI End Sub Public Sub DestroyTT() If Not bCreated Then Exit Sub Dim i As Integer For i = 0 To UBound(hCreated) DestroyWindow hCreated(i) Next End Sub Public Function InitComctl32(dwFlags As Long) As Boolean Dim icc As tagINITCOMMONCONTROLSEX On Error GoTo Err_OldVersion icc.dwSize = Len(icc) icc.dwICC = dwFlags InitComctl32 = InitCommonControlsEx(icc) On Error GoTo 0 Exit Function Err_OldVersion: InitCommonControls End Function Private Sub Form_Load() 'Создаем всплывающие подсказки InitComctl32 ICC_BAR_CLASSES 'Якобы говорим CreateTTWindow hwnd, True SetToolTip Text2, "Не преключая регистра" & vbCrLf & "начинайте печатать. По русски?", vbBlue, vbWhite, 400 'Просто подсказка CreateTTWindow hwnd, False SetToolTip Text1, "Не преключая регистра" & vbCrLf & "начинайте печатать. По английски?", , , 100, , , True SetToolTip Command1, "Выход собственно...", , , 300, , , True End Sub Private Sub Form_Unload(Cancel As Integer) DestroyTT End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д