vladvro
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору codewarlock1101 и всем Цитата: Если можешь - дай пожалуйста объяснения на примере. 1) Что значит на "выходе ожидают"??? | согласен, неточная формулировка попробую переформулировать: "SciTE на выходе от всех обработчиков кроме OnSendEditor ожидает булевское значение handled, и если оно равно true, то если в SciTE заложена дальнейшая обработка события - она не делается, причем nil, которое возвращается по умолчанию, приравнивается к false, в случае с OnSendEditor - SciTE на выходе ожидает текстовое значение, и если оно не NULL, то тогда событие не отправляется далее на обработку к ядру Scitilla, а возвращается полученый от обработчика результат, причем нюанс нынешней реализации состоит в том, что в NULL превращается не только nil, но и булевские значения (false и true)" пример стандартного обработчика: Код: local old_OnMenuCommand = OnMenuCommand function OnMenuCommand (msg, source) local result -- вызов исходного обработчика если он был if old_OnMenuCommand then result = old_OnMenuCommand(msg, source) end if MyFunction() then return true end return result end | важно: мы возвращием true только, если нам требуется отменить стандартную реакцию SciTE на команду меню, иначе мы возвращаем то, что вернул исходный обработчик, либо nil, если его не было. пример для OnSendEditor: Код: local old_OnSendEditor = OnSendEditor function OnSendEditor (msg, wp, lp) local result -- вызов исходного обработчика если он был if old_OnSendEditor then result = old_OnSendEditor (msg, wp, lp) end if msg == SCI_UPPERCASE then ChangeCase("U") return "" elseif msg == SCI_LOWERCASE then ChangeCase("L") return "" end return result end | важно: для отмены стандартной функции замены, надо вернуть что-либо отличное от nil, true или false, например пустую строку. | Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 11:47 09-11-2006 | Исправлено: vladvro, 11:58 09-11-2006 |
|