DOCUMENT:Q319002 17-MAY-2002 [foxpro] TITLE :FIX: Toolbar May Cause Incorrect Control Focus with MSAA PRODUCT :Microsoft FoxPro PROD/VER::7.0 OPER/SYS: KEYWORDS:kbGrpDSFox kbDSupport kbCodeSnippet kbvfp700 _IK283 kbVFP700sp1fix ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual FoxPro for Windows, version 7.0 ------------------------------------------------------------------------------- SYMPTOMS ======== When you use the Accessible Event Watcher from the Microsoft Active Accessibility Software Development Kit (SDK), and a toolbar control is present, Microsoft Active Accessibility may incorrectly indicate that a control on the toolbar has focus, when the control on the form actually has the focus. This may also occur with screen reader products that use Active Accessibility. RESOLUTION ========== To resolve this problem, obtain the latest service pack for Visual FoxPro for Windows 7.0. For additional information, please see the following article in the Microsoft Knowledge Base: Q316964 How to Obtain the Latest Visual FoxPro for Windows 7.0 Service Pack STATUS ====== Microsoft has confirmed this to be a problem in Microsoft Visual FoxPro for Windows 7.0. This problem was first corrected in Visual FoxPro for Windows 7.0 Service Pack 1. MORE INFORMATION ================ Steps to Reproduce the Behavior ------------------------------- 1. Download the following files from Microsoft Active Accessibility 2.0 SDK Tools (http://www.msdn.Microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/785/msdncompositedoc.xml), and then save them in the same folder: - Accevent32.exe - Event32.dll 2. Start Visual FoxPro 7.0. Make sure that the Properties window is closed. 3. Run the Accessible Event Watcher (AccEvent32.exe) from the files that you downloaded. 4. Return to Visual FoxPro, paste the following code in a program (.prg), and then run the program from the Command window: PUBLIC oForm AS FORM, ; oTB AS TOOLBAR oTB = NULL oForm = NEWOBJECT("MyForm") oForm.SHOW READ EVENTS RELEASE oTB RELEASE oForm *~~~~~~~~~~ DEFINE CLASS MyForm AS FORM AUTOCENTER = .T. SHOWWINDOW = 2 ADD OBJECT FormText1 AS TEXTBOX WITH TOP = 50 ADD OBJECT FormEdit1 AS EDITBOX WITH TOP = 80 ADD OBJECT FormOptiongroup1 AS OPTIONGROUP WITH TOP = 150, ; BUTTONCOUNT = 2, ; HEIGHT = 50, ; WIDTH = 150 PROCEDURE FormOptiongroup1.INIT THIS.SETALL("Autosize", .T.) ENDPROC ADD OBJECT FormOptiongroup2 AS OPTIONGROUP WITH TOP = 150, ; BUTTONCOUNT = 2, ; HEIGHT = 50, ; WIDTH = 150, ; LEFT = 175 PROCEDURE FormOptiongroup2.INIT THIS.SETALL("Autosize", .T.) ENDPROC PROCEDURE QUERYUNLOAD() CLEAR EVENTS ENDPROC PROCEDURE ACTIVATE() IF ISNULL(oTB) oTB = NEWOBJECT("MyToolbar") oTB.SHOW ENDIF ENDPROC ENDDEFINE DEFINE CLASS MyToolbar AS TOOLBAR SHOWWINDOW = 1 ADD OBJECT ToolbarCommand1 AS COMMANDBUTTON WITH CAPTION = "1" ADD OBJECT ToolbarCommand2 AS COMMANDBUTTON WITH CAPTION = "2" ADD OBJECT ToolbarCommand3 AS COMMANDBUTTON WITH CAPTION = "3" ADD OBJECT ToolbarCommand4 AS COMMANDBUTTON WITH CAPTION = "4" ADD OBJECT ToolbarCommand5 AS COMMANDBUTTON WITH CAPTION = "5" PROCEDURE INIT THIS.SETALL("width", 26, "Commandbutton") ENDPROC ENDDEFINE 5. Press the TAB key a few times to move between the TextBox, the EditBox, and the two OptionGroup controls. 6. Observe the output in the Accessible Event Watcher window. Note that when the Optionbuttons have focus, the items on the toolbar will sometimes incorrectly appear as if they have focus. OBJ_FOCUS Name="FORMTEXT1" Role=editable text State=focused,focusable OBJ_FOCUS Name="FORMEDIT1" Role=editable text State=focused,focusable OBJ_FOCUS Name="Toolbarcommand2" Role=push button State=focusable OBJ_FOCUS Name="Toolbarcommand4" Role=push button State=focusable If you repeat Step 4 after you close the toolbar, you receive the following results as expected: OBJ_FOCUS Name="FORMTEXT1" Role=editable text State=focused,focusable OBJ_FOCUS Name="FORMEDIT1" Role=editable text State=focused,focusable OBJ_FOCUS Name="Option1" Role=radio button State=focused,focusable OBJ_FOCUS Name="Option1" Role=radio button State=focused,focusable Additional query words: ====================================================================== Keywords : kbGrpDSFox kbDSupport kbCodeSnippet kbvfp700 _IK283 kbVFP700sp1fix Technology : kbVFPsearch kbAudDeveloper kbVFP700 Version : :7.0 Issue type : kbbug Solution Type : kbfix ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2002.