bobsyuruncle Posted May 1, 2015 Posted May 1, 2015 Good day to the autoit community.I am having an issue with the _GUICtrlRichEdit on a pop-up gui box. I have cobbled a short script together that replicates the issue. Simply run the script and click the button for the pop-up gui with the richedit box. If you close the pop-up gui and re-click the button, the richedit box fails to load on subsequent pop-up gui launches. #include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) $Form1_1 = GUICreate("hubconsole", 655, 697) GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close") $gethubbutton = GUICtrlCreateButton("Get Info", 501, 129, 81, 25) GUICtrlSetOnEvent(-1, "Main") GUISetState(@SW_SHOW) Func Form1_1Close() exit EndFunc While 1 Sleep(100) WEnd Func Main() Local $hGui, $hRichEdit, $iMsg $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) global $richgui = $hGui GUISetOnEvent($GUI_EVENT_CLOSE, "Form2_1Close") global $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) _GUICtrlRichEdit_AppendText($hRichEdit, @CR & "This is more text") GUISetState() EndFunc Func Form2_1Close() _GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes GUIDelete($richgui) EndFunc Some further information from diagnostic:The first cycle around shows no @error's for the deconstructor Form2_1Close().. so the richedit destroy and guidelete both happen.When I click the button for the second launch, I see the pop-up gui has a new HWnd.. example: 1st click (0x00514B6) 2nd click (0x000614B6)on the line " global $hRichEdit = _GUICtrlRichEdit_Create($hGui... " I see value to @error of 1 which isn't detailed in the helpfile of the function, but if I dig into the include I see error 1 gets set when: If Not _WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName) Then Return SetError(1, 0, 0) ; Invalid Window handle for _GUICtrlRichEdit_Create 1st parameterI'm stuck at this point as I can't figure why "_WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName" comes back with a failure on subsequent launches of the popup.
mikell Posted May 1, 2015 Posted May 1, 2015 Maybe try to remove the Local and Global declarations of $hRichEdit and then declare it as global at the top of the script, outside a func
bobsyuruncle Posted May 1, 2015 Author Posted May 1, 2015 Thanks for the suggestion. No luck unfortunately:Pasting partial sample showing the modified code. Everything else is same as example in 1st post:Opt("GUIOnEventMode", 1) $Form1_1 = GUICreate("hubconsole", 655, 697) GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close") $gethubbutton = GUICtrlCreateButton("Get Hub Info", 501, 129, 81, 25) GUICtrlSetOnEvent(-1, "Main") GUISetState(@SW_SHOW) global $richgui, $hRichEdit Func Form1_1Close() exit EndFunc While 1 Sleep(100) WEnd Func Main() Local $hGui, $hRichEdit, $iMsg $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) $richgui = $hGui GUISetOnEvent($GUI_EVENT_CLOSE, "Form2_1Close") $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) _GUICtrlRichEdit_AppendText($hRichEdit, @CR & "This is more text") GUISetState() EndFunc
mikell Posted May 1, 2015 Posted May 1, 2015 Try to remove the local declaration of $hRichEdit here :Func Main() Local $hGui, $hRichEdit, $iMsg
bobsyuruncle Posted May 1, 2015 Author Posted May 1, 2015 Thanks, I removed the line "Local $hGui, $hRichEdit, $iMsg" from the script.Same Behavior unfortunatelyFunc Main() $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) $richgui = $hGui GUISetOnEvent($GUI_EVENT_CLOSE, "Form2_1Close") $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) _GUICtrlRichEdit_AppendText($hRichEdit, @CR & "This is more text") GUISetState() EndFunc
bobsyuruncle Posted May 3, 2015 Author Posted May 3, 2015 Is this a bug with _GUICtrlRichEdit_Create?Can anybody shed some light on what maybe "_WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName" is doing or why the gui somehow changes that value on multiple launch?Thanks
mikell Posted May 3, 2015 Posted May 3, 2015 No bug, this works for me without issue :expandcollapse popup#include <GuiRichEdit.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) Global $hGui, $hRichEdit $Form1_1 = GUICreate("hubconsole", 655, 697) GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close") $gethubbutton = GUICtrlCreateButton("Get Info", 501, 129, 81, 25) GUICtrlSetOnEvent(-1, "Main") GUISetState() While 1 Sleep(100) WEnd Func Main() $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) GUISetOnEvent($GUI_EVENT_CLOSE, "Form2_1Close") $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) _GUICtrlRichEdit_AppendText($hRichEdit, @CR & "This is more text") GUISetState() ; msgbox(0,"", "gui : " & $hGui &@crlf& "richedit : " & $hRichEdit) EndFunc Func Form1_1Close() exit EndFunc Func Form2_1Close() _GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes GUIDelete($hGui) ; msgbox(0,"", "gui : " & $hGui &@crlf& "richedit : " & $hRichEdit) EndFunc
bobsyuruncle Posted May 6, 2015 Author Posted May 6, 2015 I have recorded a screencapture of the bug behavior.https://vid.me/egPf*Expires in 30 daysCan you please take a look and verify if this is not occuring when you run the same code?Thanks
BrewManNH Posted May 6, 2015 Posted May 6, 2015 I ran the code Mikell posted and it works fine for me using AutoIt 3.3.12.0.You're running an older version of AutoIt, you have probably run into a bug that was in the _GUICtrlRichEdit_Create function that was fixed in later versions. bobsyuruncle 1 If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
bobsyuruncle Posted May 6, 2015 Author Posted May 6, 2015 THANK YOU!!!!I had searched the forums before but did not see the bug post the first scan through. This was in fact a problem with using an older autoit engine (Couldn't be helped in this project).Relevant bug post found here: http://www.autoitscript.com/forum/topic/139788-unexpected-result-in-_guictrlrichedit_create/Based on the information I found on that bug post I have modified _GUICtrlRichEdit_Create to manually resolve the issue for this project.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now