KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q319002: FIX: Toolbar May Cause Incorrect Control Focus with MSAA

Article: Q319002
Product(s): Microsoft FoxPro
Version(s): 7.0
Operating System(s): 
Keyword(s): kbGrpDSFox kbDSupport kbCodeSnippet kbvfp700 _IK283 kbVFP700sp1fix
Last Modified: 17-MAY-2002

-------------------------------------------------------------------------------
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 1986-2002.