Jump to content

Problem with Pop Up Gui and _GUICtrlRichEdit_Create


Recommended Posts

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 parameter

I'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.

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Thanks, I removed the line "Local $hGui, $hRichEdit, $iMsg" from the script.

Same Behavior unfortunately

Func 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

 

Link to comment
Share on other sites

No bug, this works for me without issue :

#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

 

Link to comment
Share on other sites

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.

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 Gude
How 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

Link to comment
Share on other sites

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. 

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...