Что нового

Создание контекстной справки для GUI

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
AutoIt: 3.3.0.0
Версия: 1.1

Категория: Управление элементами GUI

Описание: Создает контекстные (всплывающие) окна с указанным текстом (обычно справочная информация) для отдельных элементов GUI - Button, Checkbox, Label и т.д. Основное окно должно включать в себя стиль WS_EX_CONTEXTHELP. Представленный ниже пример демонстрирует работу этой библиотеки.

Пример:
Код:
#Include <ContextHelp.au3>
#Include <WindowsConstants.au3>

Global $Edit, $ButtonOk, $ButtonCancel

GUICreate('Test', 400, 250, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP)
$Edit = GUICtrlCreateEdit('', 10, 10, 380, 202)
_ContextHelp_Create($Edit, 'Simple text')
$ButtonOk = GUICtrlCreateButton('OK', 127, 220, 70, 23)
_ContextHelp_Create($ButtonOk, 'Press "OK" button')
$ButtonCancel = GUICtrlCreateButton('Cancel', 203, 220, 70, 23)
_ContextHelp_Create($ButtonCancel, 'Press "Cancel" button')
GUISetState()

Do
Until GUIGetMsg() = -3

Скриншот:

ContextHelp.png

Источник: ContextHelp UDF (оффициальный форум)
Автор: Yashied
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Как раз мне это сейчас и нужно 8)
Спасибо :smile:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Пожалуйста. :smile:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновил библиотеку до версии 1.1. В предыдущей версии хэндл элемента (контрола) для контекстной справки брался как и положено из структуры HELPINFO. Но если имело место перекрытие элементов (например кнопка поверх картинки), то HELPINFO всегда содержала хэндл первого (самого нижнего, т.е. картинки) элемента, в то время, как контекстная справка назначена на последний (верхний, т.е. кнопку) элемент. В новой версии все работает как и положено. Ниже представлен код для проверки.

Код:
#Include <ContextHelp.au3>
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

GUICreate('Test', 400, 400, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP)
GUICtrlCreateLabel('', 0, 0, 400, 400, 0)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button = GUICtrlCreateButton('OK', 165, 366, 70, 23)
_ContextHelp_Create($Button, 'Press "OK" button to exit.')
GUISetState()

While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3, $Button
            ExitLoop
    EndSwitch
WEnd
 

Viktor217

Осваивающий
Сообщения
233
Репутация
31
При запуске скрипта(Из первого и второго примера) выдаёт:
Код:
C:\Program Files\AutoIt3\Include\ContextHelp.au3(54,66) : ERROR: Opt() called with illegal argument 1: "OnExitFunc"
Global $OnContextHelpExit = Opt('OnExitFunc', 'OnContextHelpExit')
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Admin\Рабочий стол\AutoIt v3 Script (5).au3 - 1 error(s), 0 warning(s)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Viktor217 [?]
При запуске скрипта(Из первого и второго примера) выдаёт
В шапке же указано: AutoIt: 3.3.0.0

Скрипт нужно обновлять.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Прикрепил версию для последних версии AutoIt, также внёс некоторые изменения:

+ Добавлена функция _ContextHelp_Trigger, для имитации нажатия кнопки с "?".
+ Добавлены параметры $sCallback и $vCBUData для вызова пользовательской функции.
- Убран #include <WinAPI.au3>.
 

Вложения

  • ContextHelp.zip
    3.6 КБ · Просмотры: 7

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Мне вот интересно, как можно кнопку контекстного меню совместить с кнопками сворачивания и разворачивания? :scratch:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Ещё немного изменил библиотеку, для поддержки элементов созданных с UDF.
 

Вложения

  • ContextHelp.zip
    3.9 КБ · Просмотры: 16
Верх