Advertisement
AZJIO

_ToolTip2

Oct 5th, 2013
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 7.62 KB | None | 0 0
  1. #include <GUIToolTip.au3>
  2. #include <FontConstants.au3>
  3. #include "WinAPI.au3"
  4.  
  5. Global $aInfo[6][2] = [[ _
  6.         'Задание', '1'],[ _
  7.         'Номер ошибки', '2'],[ _
  8.         'Время начала', '3'],[ _
  9.         'Время окончания', '4'],[ _
  10.         'Время выполнения', '5'],[ _
  11.         'Описание ошибки', '6']]
  12.  
  13. $sText = ''
  14. For $i = 0 To 5
  15.     _StringFormat($sText, $aInfo[$i][0], $aInfo[$i][1])
  16. Next
  17. $sText = StringTrimRight($sText, 1)
  18.  
  19. Func _StringFormat(ByRef $sText, $sString1, $sString2)
  20.     $sText &= StringFormat("%-18s: %s\n", $sString1, $sString2)
  21. EndFunc   ;==>_StringFormat
  22. ; MsgBox(0, 'Сообщение', $sText)
  23.  
  24. ; Получает дескриптор иконки
  25. $hIcon = _WinAPI_LoadShell32Icon(15)
  26.  
  27. ; $hTool = _ToolTip($sText, 500, 300, 'Информация', $hIcon, $TTS_NOPREFIX + $TTS_BALLOON, 16, 'Consolas', 0x1EBFFF, 0x395A00)
  28. $hTool = _ToolTip($sText, -1, 300, 'Информация', $hIcon, $TTS_NOPREFIX + $TTS_BALLOON, 16, 'Consolas', 0x1EBFFF, 0x395A00)
  29. $hFont = @extended
  30. ; _ToolTip($sText, 500, 300)
  31. ; _GUIToolTip_Pop($hTool)
  32. ; _GUIToolTip_TrackActivate($hTool)
  33. ; Sleep(200)
  34. ; _GUIToolTip_PopUp($hTool)
  35. Sleep(1500)
  36.  
  37. For $i = 1 To StringLen($sText) - 1
  38.     _GUIToolTip_UpdateTipText($hTool, 0, 0, StringTrimRight($sText, $i))
  39.     Sleep(10)
  40. Next
  41. Sleep(500)
  42. _GUIToolTip_UpdateTipText($hTool, 0, 0, $sText)
  43. If $hFont Then _WinAPI_DeleteObject($hFont) ; удаление объекта шрифта (обратите внимание, что шрифт не работает после удаления объекта)
  44.  
  45. For $i = 1 To 5
  46.     ; Устанавливает позицию подсказки
  47.     _GUIToolTip_TrackPosition($hTool, Random(0, @DesktopWidth, 1), Random(0, @DesktopHeight, 1))
  48.     Sleep(400)
  49. Next
  50.  
  51. _GUIToolTip_TrackPosition($hTool, 500, 300)
  52. For $i = 1 To 4
  53.     ; Принудительно показывает подсказку
  54.     _GUIToolTip_TrackActivate($hTool, False)
  55.     Sleep(500)
  56.  
  57.     ; Принудительно показывает подсказку
  58.     _GUIToolTip_TrackActivate($hTool)
  59.     Sleep(500)
  60. Next
  61.  
  62. _GUIToolTip_Destroy($hTool) ; Удалить подсказку
  63.  
  64.  
  65. Func _ToolTip($sText, $iX = -1, $iY = -1, $iTitle = '', $hIcon = 0, $iStyle = 0, $iFontSize = 0, $iFontFamily = 'Arial', $iFontColor = 0, $iBkColor = 0)
  66.     ; If BitAND($iStyle, 1) Then $iStyle += $TTS_BALLOON
  67.  
  68.     ; Создаёт ToolTip
  69.     Local $hFont = 0, $iError = 0
  70.     Local $hTool = _GUIToolTip_Create(0, $iStyle)
  71.     If Not $hTool Then Return SetError(-1, 0, 0)
  72.  
  73.     ; Устанавливает ширину ToolTip
  74.     _SendMessage($hTool, $TTM_SETMAXTIPWIDTH, 0, @DesktopWidth) ; _GUIToolTip_SetMaxTipWidth
  75.     ; Кроме того это позволяет отображать текст с переносом строки. Иначе @CRLF не будет иметь эффекта.
  76.  
  77.     ; Устанавливает шрифт для ToolTip
  78.     If $iFontSize Then
  79.         $hFont = _WinAPI_CreateFont($iFontSize, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $iFontFamily)
  80.         If $hFont Then
  81.             DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $__WINAPICONSTANT_WM_SETFONT, "hwnd", $hFont, "lparam", True) ; _WinAPI_SetFont
  82.         Else
  83.             $iError += 1
  84.         EndIf
  85.     EndIf
  86.  
  87.     ; Устанавливает цвет текста (BGR) всплывающей подсказки, _GUIToolTip_SetTipTextColor
  88.     If $iFontColor Then DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $TTM_SETTIPTEXTCOLOR, "wparam", $iFontColor, "lparam", 0)
  89.     ; Устанавливает цвет фона (BGR) всплывающей подсказки, _GUIToolTip_SetTipBkColor
  90.     If $iBkColor Then DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $TTM_SETTIPBKCOLOR, "wparam", $iBkColor, "lparam", 0)
  91.  
  92.     ; Устанавливает заголовок подсказки
  93.     If $iTitle And Not _GUIToolTip_SetTitle($hTool, $iTitle, $hIcon) Then $iError += 2
  94.  
  95.     If $iX = -1 Or $iY = -1 Then
  96.         ; $iFlags = 32
  97.         $iFlags = 0
  98.         ; $aPos = MouseGetPos()
  99.         ; $aPos[0], $aPos[1]
  100.     Else
  101.         $iFlags = 2 + 16
  102.         ; Устанавливает позицию подсказки, _GUIToolTip_TrackPosition
  103.         Local $Long = BitOR(BitShift($iY, -16), BitAND($iX, 0xFFFF))
  104.         DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $TTM_TRACKPOSITION, "wparam", 0, "lparam", $Long)
  105.     EndIf
  106.     ; Назначает подсказку элементу и стиль с координатами
  107.     ; If Not _GUIToolTip_AddTool($hTool, 0, $sText, 0, 0, 0, 0, 0, 2 + 8 + 16) Then Return SetError(1, 0, 0)
  108.     ; If Not _GUIToolTip_AddTool($hTool, 0, $sText, 0, 0, 0, 0, 0, 32) Then Return SetError(1, 0, 0)
  109.     If Not _GUIToolTip_AddTool($hTool, 0, $sText, 0, 0, 0, 0, 0, $iFlags) Then Return SetError(1, 0, 0)
  110.  
  111.     ; Принудительно показывает подсказку
  112.     _GUIToolTip_TrackActivate($hTool)
  113.     Return SetError($iError, $hFont, $hTool)
  114. EndFunc   ;==>_ToolTip
  115.  
  116. ; TTF_IDISHWND =        1 - Указывает, что $iID является дескриптором объекта, вместо идентификатора ID
  117. ; TTF_CENTERTIP =   2 - Центрирует окно подсказки ниже указанного $iID
  118. ; TTF_RTLREADING =  4 - Указывает, что текст будет отображаться в противоположном направлении
  119. ; TTF_SUBCLASS =        8 - Указывает, что подсказка должна быть подклассом элемента окна
  120. ; TTF_TRACK =           16 - Помещает подсказку вблизи элемента, которому он соответствует
  121. ; TTF_ABSOLUTE =        32 - абсолютные координаты. Позиционирует окно в тех же координатах, что и $TTM_TRACKPOSITION
  122. ; TTF_TRANSPARENT = 64 - Заставляет элемент пересылать сообщения мыши родительскому окну
  123. ; TTF_PARSELINKS =  128 - Указывает, что ссылки в тексте элемента должны быть распарсены
  124.  
  125.           ; 1 - Указывает, что $iID является дескриптором объекта, вместо идентификатора ID
  126.           ; 2 - Центрирует окно подсказки ниже указанного $iID
  127.           ; 4 - Указывает, что текст будет отображаться в противоположном направлении
  128.           ; 8 - Указывает, что подсказка должна быть подклассом элемента окна
  129.          ; 16 - Помещает подсказку вблизи элемента, которому он соответствует
  130.          ; 32 - абсолютные координаты. Позиционирует окно в тех же координатах, что и $TTM_TRACKPOSITION
  131.          ; 64 - Заставляет элемент пересылать сообщения мыши родительскому окну
  132.         ; 128 - Указывает, что ссылки в тексте элемента должны быть распарсены
  133.  
  134.  
  135. ; флаги 4, 128 не работают
  136. ; 16 - заставляет учитывать координаты
  137. ; 2 язычок делает по центру, инеча в левом верхнем углу
  138. ; 8 - без этого сработало одинаково, что и с 8. Ну может при указании ID поменяется
  139. ; 32 - не влияет. Что 0 что 32 одинаково. Ну может при указании ID поменяется
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement