Что нового

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

joiner

Модератор
Локальный модератор
Сообщения
3 362
Репутация
586
Скорее всего это не баг, но все же
пробуйте запустить скрипт
Код:
#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 752
Репутация
1 149
joiner
Я уже отписывал. Надо из новой версии AutoIt3 взять, можно и другие аналогично обновить.
 
Автор
joiner

joiner

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

AZJIO

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