Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <GUIToolTip.au3>
- #include <FontConstants.au3>
- #include "WinAPI.au3"
- Global $aInfo[6][2] = [[ _
- 'Задание', '1'],[ _
- 'Номер ошибки', '2'],[ _
- 'Время начала', '3'],[ _
- 'Время окончания', '4'],[ _
- 'Время выполнения', '5'],[ _
- 'Описание ошибки', '6']]
- $sText = ''
- For $i = 0 To 5
- _StringFormat($sText, $aInfo[$i][0], $aInfo[$i][1])
- Next
- $sText = StringTrimRight($sText, 1)
- Func _StringFormat(ByRef $sText, $sString1, $sString2)
- $sText &= StringFormat("%-18s: %s\n", $sString1, $sString2)
- EndFunc ;==>_StringFormat
- ; MsgBox(0, 'Сообщение', $sText)
- ; Получает дескриптор иконки
- $hIcon = _WinAPI_LoadShell32Icon(15)
- ; $hTool = _ToolTip($sText, 500, 300, 'Информация', $hIcon, $TTS_NOPREFIX + $TTS_BALLOON, 16, 'Consolas', 0x1EBFFF, 0x395A00)
- $hTool = _ToolTip($sText, -1, 300, 'Информация', $hIcon, $TTS_NOPREFIX + $TTS_BALLOON, 16, 'Consolas', 0x1EBFFF, 0x395A00)
- $hFont = @extended
- ; _ToolTip($sText, 500, 300)
- ; _GUIToolTip_Pop($hTool)
- ; _GUIToolTip_TrackActivate($hTool)
- ; Sleep(200)
- ; _GUIToolTip_PopUp($hTool)
- Sleep(1500)
- For $i = 1 To StringLen($sText) - 1
- _GUIToolTip_UpdateTipText($hTool, 0, 0, StringTrimRight($sText, $i))
- Sleep(10)
- Next
- Sleep(500)
- _GUIToolTip_UpdateTipText($hTool, 0, 0, $sText)
- If $hFont Then _WinAPI_DeleteObject($hFont) ; удаление объекта шрифта (обратите внимание, что шрифт не работает после удаления объекта)
- For $i = 1 To 5
- ; Устанавливает позицию подсказки
- _GUIToolTip_TrackPosition($hTool, Random(0, @DesktopWidth, 1), Random(0, @DesktopHeight, 1))
- Sleep(400)
- Next
- _GUIToolTip_TrackPosition($hTool, 500, 300)
- For $i = 1 To 4
- ; Принудительно показывает подсказку
- _GUIToolTip_TrackActivate($hTool, False)
- Sleep(500)
- ; Принудительно показывает подсказку
- _GUIToolTip_TrackActivate($hTool)
- Sleep(500)
- Next
- _GUIToolTip_Destroy($hTool) ; Удалить подсказку
- Func _ToolTip($sText, $iX = -1, $iY = -1, $iTitle = '', $hIcon = 0, $iStyle = 0, $iFontSize = 0, $iFontFamily = 'Arial', $iFontColor = 0, $iBkColor = 0)
- ; If BitAND($iStyle, 1) Then $iStyle += $TTS_BALLOON
- ; Создаёт ToolTip
- Local $hFont = 0, $iError = 0
- Local $hTool = _GUIToolTip_Create(0, $iStyle)
- If Not $hTool Then Return SetError(-1, 0, 0)
- ; Устанавливает ширину ToolTip
- _SendMessage($hTool, $TTM_SETMAXTIPWIDTH, 0, @DesktopWidth) ; _GUIToolTip_SetMaxTipWidth
- ; Кроме того это позволяет отображать текст с переносом строки. Иначе @CRLF не будет иметь эффекта.
- ; Устанавливает шрифт для ToolTip
- If $iFontSize Then
- $hFont = _WinAPI_CreateFont($iFontSize, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $iFontFamily)
- If $hFont Then
- DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $__WINAPICONSTANT_WM_SETFONT, "hwnd", $hFont, "lparam", True) ; _WinAPI_SetFont
- Else
- $iError += 1
- EndIf
- EndIf
- ; Устанавливает цвет текста (BGR) всплывающей подсказки, _GUIToolTip_SetTipTextColor
- If $iFontColor Then DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $TTM_SETTIPTEXTCOLOR, "wparam", $iFontColor, "lparam", 0)
- ; Устанавливает цвет фона (BGR) всплывающей подсказки, _GUIToolTip_SetTipBkColor
- If $iBkColor Then DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $TTM_SETTIPBKCOLOR, "wparam", $iBkColor, "lparam", 0)
- ; Устанавливает заголовок подсказки
- If $iTitle And Not _GUIToolTip_SetTitle($hTool, $iTitle, $hIcon) Then $iError += 2
- If $iX = -1 Or $iY = -1 Then
- ; $iFlags = 32
- $iFlags = 0
- ; $aPos = MouseGetPos()
- ; $aPos[0], $aPos[1]
- Else
- $iFlags = 2 + 16
- ; Устанавливает позицию подсказки, _GUIToolTip_TrackPosition
- Local $Long = BitOR(BitShift($iY, -16), BitAND($iX, 0xFFFF))
- DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hTool, "uint", $TTM_TRACKPOSITION, "wparam", 0, "lparam", $Long)
- EndIf
- ; Назначает подсказку элементу и стиль с координатами
- ; If Not _GUIToolTip_AddTool($hTool, 0, $sText, 0, 0, 0, 0, 0, 2 + 8 + 16) Then Return SetError(1, 0, 0)
- ; If Not _GUIToolTip_AddTool($hTool, 0, $sText, 0, 0, 0, 0, 0, 32) Then Return SetError(1, 0, 0)
- If Not _GUIToolTip_AddTool($hTool, 0, $sText, 0, 0, 0, 0, 0, $iFlags) Then Return SetError(1, 0, 0)
- ; Принудительно показывает подсказку
- _GUIToolTip_TrackActivate($hTool)
- Return SetError($iError, $hFont, $hTool)
- EndFunc ;==>_ToolTip
- ; TTF_IDISHWND = 1 - Указывает, что $iID является дескриптором объекта, вместо идентификатора ID
- ; TTF_CENTERTIP = 2 - Центрирует окно подсказки ниже указанного $iID
- ; TTF_RTLREADING = 4 - Указывает, что текст будет отображаться в противоположном направлении
- ; TTF_SUBCLASS = 8 - Указывает, что подсказка должна быть подклассом элемента окна
- ; TTF_TRACK = 16 - Помещает подсказку вблизи элемента, которому он соответствует
- ; TTF_ABSOLUTE = 32 - абсолютные координаты. Позиционирует окно в тех же координатах, что и $TTM_TRACKPOSITION
- ; TTF_TRANSPARENT = 64 - Заставляет элемент пересылать сообщения мыши родительскому окну
- ; TTF_PARSELINKS = 128 - Указывает, что ссылки в тексте элемента должны быть распарсены
- ; 1 - Указывает, что $iID является дескриптором объекта, вместо идентификатора ID
- ; 2 - Центрирует окно подсказки ниже указанного $iID
- ; 4 - Указывает, что текст будет отображаться в противоположном направлении
- ; 8 - Указывает, что подсказка должна быть подклассом элемента окна
- ; 16 - Помещает подсказку вблизи элемента, которому он соответствует
- ; 32 - абсолютные координаты. Позиционирует окно в тех же координатах, что и $TTM_TRACKPOSITION
- ; 64 - Заставляет элемент пересылать сообщения мыши родительскому окну
- ; 128 - Указывает, что ссылки в тексте элемента должны быть распарсены
- ; флаги 4, 128 не работают
- ; 16 - заставляет учитывать координаты
- ; 2 язычок делает по центру, инеча в левом верхнем углу
- ; 8 - без этого сработало одинаково, что и с 8. Ну может при указании ID поменяется
- ; 32 - не влияет. Что 0 что 32 одинаково. Ну может при указании ID поменяется
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement