![]() |
Режимы MessageLoop и OnEvent Mode
Вопрос в различии между этими 2-мя режимами и их применением в ситуации, когда форма содержит Tab с вкладками и кнопками на каждой из них, а также общие кнопки для всей формы.
Изучил справку по этим 2-м режимам (rus). Но остался ряд вопросов: 1. OnEvent Mode прерывает выполнение скрипта на время выполнения события. В справке нет ответа как действует в этом случае MessageLoop? 2. Не совсем понятна фраза справки: "Обработка сообщений в режиме опроса требует обеспечения высокой скорости чтения вызовом GUIGetMsg и последующей обработки полученных сообщений. Иначе не все события будут обработаны." Что означает "высокой скорости чтения вызовом GUIGetMsg"? Значит ли это, что машина со старым процессором может отработать скрипт неполностью (особенно если в цикле много case)? 3. В справке указано, что MessageLoop, не смотря на цикл, не грузит процессор. Насколько я понял, OnEvent Mode, не является циклическим процессом и срабатывает только при активации пользователем. Логично предположить, что он также не грузит процессор. Я прав? 4. Для меня осталось не совсем понятно, в чем принципиальное отличие этих 2-х режимов? Они выполняют одну и туже функцию, без особой нагрузки на процессор... Какой режим когда лучше, в таком случае, применять? Какой из них менее ресурсоемкий и более надежный? 5. Если брать мой частный случай, то меня конкретно интересует следующее: если гуи-форма содержит много кнопок на разных вкладках + общие кнопки, то как будет лучше действовать: - использовать вариант MessageLoop - для общих кнопок, а вариант OnEvent Mode - для кнопок на конкретной вкладке - лучше использовать только вариант MessageLoop - лучше использовать только вариант OnEvent Mode - все равно Если можно, прокомментируйте свои ответы (особенно на вопрос #5). Заранее благодарю за помощь. |
Немного по теме: http://autoit-script.ru/index.php/topic,459.0.html
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Creat0R, спасибо за развернутый ответ. Есть еще один вопрос по форме с вкладками: как сделать так, чтобы скрипты, находящиеся в привязке к определенной вкладке Tab, отрабатывали только тогда, когда я перехожу на эту вкладку (делаю ее активной), а не при загрузке всей формы. Просто, при большом количестве вкладок и скриптов, вся прога грузится довольно долго, пока не обработаются все скрипты вкладок.
Спасибо |
Цитата:
|
Creat0R, так и сделаю
|
Цитата:
|
Creat0R, так точно, сэр :-). Закрываю.
|
Creat0R, извините, но обнаружил на русском форуме Autoit Ваше высказывание на тему MessageLoop vs OnEvent Mode:
пост http://autoit-script.ru/index.php/topic,459.0.html цитата: "Это всё зависит от поставленной задачи. Иногда лучше использовать MessageLoop (например если некие элементы вызывают дочернее окно которое также требует обработку событий), а иногда лучше OnEvent. " Оно противоречит Вашему ответу в текущем посте: Цитата:
выпадающий список (combo), внесение твика в реестр (прописывание в автозагрузке), кнопка сохранения и закрытия и для меня очень важно сразу определиться какой режим лучше использовать, чтобы потом не переделывать скрипт. Спасибо |
Цитата:
Цитата:
Код:
#include <GUIConstantsEx.au3> Код:
#include <GUIConstantsEx.au3> Выбирай :) |
Creat0R, большое спасибо (особенно за 3 вариант)
PS противоречие было в том, что в первой цитате Вы рекомендовали использовать MessageLoop с дочерними окнами, а во-второй, наоборот, если нет дочерних окон. Не заглянете в тему http://forum.oszone.net/thread-182740.html ? Там у нас небольшая проблема возникла с ограничением вывода инфо в ListViewItem |
Цитата:
Цитата:
|
Время: 07:41. |
Время: 07:41.
© OSzone.net 2001-