Что нового

[Баг] Невозможно в одном окне создать два элемента _GUICtrlRichEdit_Create

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Скорее всего это не баг, но все же
пробуйте запустить скрипт
Код:
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
OnAutoItExitRegister('_OnExit') 
Global $hRichEdit,$hRichEdit1
Main()
Func Main()
    Local $hGui
    $hGui = GUICreate(StringTrimRight(@ScriptName, 4), 420, 350, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, 'Это тест.', 10, 10, 400, 50)
	 $hRichEdit1 = _GUICtrlRichEdit_Create($hGui, 'Это тест.', 10, 100, 400, 50)
    GUISetState()

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Main
Func _OnExit()
    _GUICtrlRichEdit_Destroy($hRichEdit)
	_GUICtrlRichEdit_Destroy($hRichEdit1)
    GUIDelete()
EndFunc
не получается создать два элемента
Код:
_GUICtrlRichEdit_Create

на официальном форуме нашел переделанную библиотеку GuiRichEdit.au3
если ею заменить стандартную, которая идет при установке AutoIT, то скрипт работает и создается два элемента.
может кто объяснить что да как
библиотеку брал здесь http://www.autoitscript.com/forum/topic/131622-modify-dragdrop-behavior-for-richedit-text/#entry957765


Добавлено:
Сообщение автоматически объединено:

вобщем, это был баг. судя по ссылке, которую я дал. он исправлен в версии AutoIT v3.3.9.4-beta
 

AZJIO

Меценат
Меценат
Сообщения
2,891
Репутация
1,195
joiner
Я уже отписывал. Надо из новой версии AutoIt3 взять, можно и другие аналогично обновить.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
AZJIO
не видел.
раз было обсуждение. то прошу извинить за повтор
 

AZJIO

Меценат
Меценат
Сообщения
2,891
Репутация
1,195
joiner
На счёт примера, проблема зависания так и не исправлена, то есть при ошибки в скрипте скрипт нагружает процессор на 50%, второй вылет с ошибкой и система виснет намертво.
OnAutoItExitRegister нас выручает, но он должен быть либо сразу после объявления $hRichEdit в заголовке функции Main, либо после самой функции _GUICtrlRichEdit_Create. Причина: если ошибка произошла до создания и объявления $hRichEdit, то функция _OnExit пытается применить Destroy к несуществующим переменным. А если OnAutoItExitRegister будет зарегистрирована позже, то синтаксические ошибки между созданием RichEdit и регистрацией OnAutoItExitRegister будут также вешать систему, так как ошибка уже произошла после вызова _GUICtrlRichEdit_Create и AutoIt3 завершает скрипт, а OnAutoItExitRegister ещё не вызвана.
 
Верх