jchapman15 Posted June 14, 2013 Share Posted June 14, 2013 Can anyone tell me why a window handle becomes invalid after it's stored inside a dictionary? If you disable the line where it's stored the RichEdit box will show, otherwise it _GUICtrlRichEdit_Create errors out -1 (window handle no longer exists) #include <GuiRichEdit.au3> #include <WindowsConstants.au3> $controls = ObjCreate("Scripting.Dictionary") $win = GUICreate("Enter Information", 400, 400) $controls.Add("gui", $win) ;if window handle stored in a dictionary object then the handle is invalidated _GUICtrlRichEdit_Create($win, "test string", 25, 200, 350, 100, BitOr($ES_AUTOHSCROLL, $ES_AUTOVSCROLL, $WS_VSCROLL, $ES_MULTILINE, $ES_READONLY)) GUISetState() While GUIGetMsg() <> -3 sleep(10) WEnd Link to comment Share on other sites More sharing options...
water Posted June 14, 2013 Share Posted June 14, 2013 Why do you need to store it in a dictionary? My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
jchapman15 Posted June 14, 2013 Author Share Posted June 14, 2013 (edited) Water: Well I didn't really need to do it that way I could store the window handle in a global, but the dictionary keeps all of my control IDs on the GUI in a nice organized package that can be easily passed to multiple functions. NutStomper: Odd that it converts the original variable, dictionary.Add is ByRef then I guess? Thanks for the workaround! Edited June 14, 2013 by jchapman15 Link to comment Share on other sites More sharing options...
water Posted June 14, 2013 Share Posted June 14, 2013 I usually use an array to store all the IDs of a GUI. Advantage: No external references needed. Disadvantage: You can't access the elements by name. My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
jchapman15 Posted June 14, 2013 Author Share Posted June 14, 2013 I used arrays to start, but after my GUI became pretty complex my code started to become too much of a pain to update having to look back and forth to figure out which indexes match to which controls. Not having to worry about external references is a definate plus, but portability isn't a concern with this project. Thanks for your help! Link to comment Share on other sites More sharing options...
guinness Posted June 15, 2013 Share Posted June 15, 2013 The handle is being converted to a number when it's added to the dictionary. Use HWnd() to convert it back to a handle. And you can use Ptr. #include <Constants.au3> Local $hGUI = GUICreate(Default) MsgBox($MB_SYSTEMMODAL, '', 'hGUI = ' & $hGUI) MsgBox($MB_SYSTEMMODAL, '', 'hGUI = ' & Number($hGUI)) MsgBox($MB_SYSTEMMODAL, '', 'Number-Ptr = ' & Ptr(Number($hGUI)) & @CRLF & 'Number-HWnd = ' & HWnd(Number($hGUI))) UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
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