Тема: AHK: Ограничение размеров tooltip
Здравствуйте. Можно ли как-то ограничить размеры ToolTip, например, по ширине? Чтобы длинный текст писался в столбик, а не одной большой строчкой.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте. Можно ли как-то ограничить размеры ToolTip, например, по ширине? Чтобы длинный текст писался в столбик, а не одной большой строчкой.
Есть такой символ: `n, попробуйте использовать его.
teadrinker, текст в ToolTip идет через множество переменных, и количество слов в них заранее не известно. Поэтому 'n проходит мимо. Хотя может и можно как-то реализовать, но идей нет.
Ну, по идее ничего не мешает разбивать все тексты на куски по десть (или сколько надо) слов и встраивать знак переноса в конце каждой группы.
Ну, если по-умному, то так:
#Persistent
Hook := new WindowsHook(WH_CALLWNDPROC := 4, "CallWndProc", maxWidth := 200, false)
ToolTip % "Здравствуйте. Можно ли как-то ограничить размеры ToolTip, например, по ширине? Чтобы длинный текст писался в столбик, а не одной большой строчкой."
Return
CallWndProc(nCode, wParam, lParam) {
static TTM_TRACKPOSITION := 0x0412, TTM_SETMAXTIPWIDTH := 0x0418
msg := NumGet(lParam + A_PtrSize*2, "UInt")
hwnd := NumGet(lParam + A_PtrSize*3)
if (msg = TTM_TRACKPOSITION)
DllCall("SendMessage", "Ptr", hwnd, "UInt", TTM_SETMAXTIPWIDTH, "Int", 0, "Int", A_EventInfo)
DllCall("CallNextHookEx", "Ptr", 0, "int", nCode, "Ptr", wParam, "Ptr", lParam, "Ptr")
}
class WindowsHook {
__New(type, callback, eventInfo := "", isGlobal := true) {
this.pCallback := RegisterCallback(callback, "Fast", 3, eventInfo)
this.hHook := DllCall("SetWindowsHookEx", "Int", type, "Ptr", this.pCallback
, "Ptr", !isGlobal ? 0 : DllCall("GetModuleHandle", "UInt", 0, "Ptr")
, "UInt", isGlobal ? 0 : DllCall("GetCurrentThreadId"), "Ptr")
}
__Delete() {
DllCall("UnhookWindowsHookEx", "Ptr", this.hHook)
DllCall("GlobalFree", "Ptr", this.pCallback, "Ptr")
}
}
teadrinker, огромное спасибо.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться