dpaynebrown Posted June 27, 2007 Share Posted June 27, 2007 I've had great success using the GUIRegisterMsg command on forms having a single Input control. When I attempt to do the same with multiple Input fields as shown here, I receive the following error from SciTE. ==> Variable used without being declared.: Case $txtBoxB Case ^ ERROR The code in the MessageHandler function doesn't do anything but display a MsgBox for this example, but I can't get it to even run. Furthermore, commenting-out any one of the (3) Case statements results in the same error message but referring to one of the other fields. So, what am I missing? expandcollapse popup#include <GUIConstants.au3> #include <Misc.au3> #include <Array.au3> #include <GuiEdit.au3> _Singleton( @ScriptName ) Global $TESTING = True ;- Initialize general variables Global $i, $j, $k, $x, $y, $z ;- Temporary variables (some may not be used) Global $gvEvent ;- Define Windows notification messages for an editbox. It's only a partial list, but it's more than we need Global $gaMessageIndex = _ArrayCreate( False, False, False ) ;- One for each message Global Const $WM_COMMAND = 0x0111 ;- For registering message Global Const $EN_SETFOCUS = 0x0100 ;- Sent when an edit control receives focus Global Const $EN_KILLFOCUS = 0x0200 ;- Sent when an edit control loses focus Global Const $EN_CHANGE = 0x0300 ;- Sent after field is altered and after it is displayed. Global Const $EN_UPDATE = 0x0400 ;- Sent after field is altered, but before it is displayed GUIRegisterMsg( $WM_COMMAND, "_MessageHandler" ) Global $frmMain = GUICreate( "Test Messaging", 240, 135 ) Global $txtBoxA = GUICtrlCreateInput( " ", 20, 20 ) Global $txtBoxB = GUICtrlCreateInput( " ", 20, 40 ) Global $txtBoxC = GUICtrlCreateInput( " ", 20, 60 ) Global $cmdQuit = GUICtrlCreateButton( "QUIT", 20, 90 ) GUISetState() For $i = 0 To UBound( $gaMessageIndex ) - 1 ;- Must reset array here or some indexes may be True $gaMessageIndex[$i] = False Next ;- Main loop While True $gvEvent = GUIGetMsg() Select Case $gvEvent = $GUI_EVENT_CLOSE ExitLoop Case $gvEvent = $cmdQuit ExitLoop EndSelect WEnd GUIDelete( $frmMain ) Exit( 0 ) Func _MessageHandler( $hWnd, $gvEvent, $wParam, $lParam ) Local $lnWinNotify = _HiWord( $wParam ) ;- Notification message returned Local $lnWhichCtrl = _LoWord( $wParam ) ;- Which control fired this message Switch $lnWhichCtrl Case $txtBoxA MsgBox( 0, "MsgA", $lnWinNotify ) Case $txtBoxB MsgBox( 0, "MsgB", $lnWinNotify ) Case $txtBoxC MsgBox( 0, "MsgC", $lnWinNotify ) EndSwitch Return $GUI_RUNDEFMSG EndFunc Func _HiWord( $pvParam ) Return BitShift( $pvParam, 0x10 ) EndFunc Func _LoWord( $pvParam ) Return BitAND( $pvParam, 0xFFFF ) EndFunc Link to comment Share on other sites More sharing options...
star2 Posted June 27, 2007 Share Posted June 27, 2007 I think u need to use this GUICTRLREAD [quote]Baby you're all that I want, When you're lyin' here in my armsI'm findin' it hard to believe, We're in heavenAnd love is all that I need , And I found it there in your heartIt isn't too hard to see, We're in heaven .Bryan Adams[/quote].............................................................................[u]AUTOIT[/u] Link to comment Share on other sites More sharing options...
Siao Posted June 27, 2007 Share Posted June 27, 2007 (edited) GUIRegisterMsg( $WM_COMMAND, "_MessageHandler" ) in your code is set before you actually create the controls (and initialize those variables with controlIDs) , so it's not surprising that it complains about $txtBoxB or whatever being undeclared... Edited June 27, 2007 by Siao "be smart, drink your wine" Link to comment Share on other sites More sharing options...
dpaynebrown Posted June 27, 2007 Author Share Posted June 27, 2007 Yep. That was it, Siao. Thanks! 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