Yes this is very helpful info.  The only remaining concern I can see
is that my coworker, Jon, reports that not all windows have .control
objects associated with them.

On Thu, Dec 09, 2010 at 09:49:34AM -0500, Doug Geoffray wrote:
Then yes, the Window.Control.Previous and Window.Control.Next will get 
you the previous and next window in Z order (also commonly referred to 
as tab order).  In fact when you use these properties, Window-Eyes 
simply calls the GetWindow function with either GW_HWNDPREV or GW_HWNDNEXT.

You may also be able to use the Window.Control.Taborder property to also 
help you...

Does this help?
Doug

On 12/9/2010 9:26 AM, Doug Lee wrote:
>I don't know my coworker's exact use case, but one I can think of is
>when a control in focus is predictably labeled by the control prior to
>it in Z order, or the prior Static control in Z order, or less
>commonly, by the prior Static to the focused control's parent or
>grandparent.  Screen readers sometimes automate this sort of tree
>search because these algorithms have proven effective in enough cases
>I guess.  I've run into the need for this sort of thing quite often in
>JAWS scripting, though off the top of my head I don't know how many of
>those instances would have been adequately addressed by just a loop
>through directChildren.
>
>On Thu, Dec 09, 2010 at 08:32:22AM -0500, Doug Geoffray wrote:
>Hello Doug L,
>
>Regarding your Z order question...  Can you give me a specific example
>what you are needing this for?  Maybe that would help us give you a
>better idea of what you can currently do or something we could add in
>the future.
>
>Thanks,
>Doug G
>
>On 11/22/2010 3:33 PM, Doug Lee wrote:
>>We're looking for a reliable way to get the next and previous window
>>in Z order from a given window.  It might sometimes also be useful
>>to get the first and last window in Z order at the given window's
>>tree level.  The Windows API GetWindow() function allows this sort
>>of query, and there are WinAPI functions for next and prior window,
>>but I don't see a direct way to do it in Window-Eyes.  I'm betting
>>I missed something obvious.
>>
>>My two ideas are
>>
>>' Given window, the one to start from ...
>>dim nextWindow, priorWindow
>>' Idea 1.
>>set nextWindow = window.control.next.window
>>set priorWindow = window.control.previous.window
>>' Idea 2.
>>dim windows : set windows = window.parent.directChildren
>>dim i
>>for i = 1 to windows.count
>>      if windows(i).handle = window.handle then
>>              set nextWindow = windows(i+1)
>>              set priorWindow = windows(i-1)
>>      end if
>>next
>>
>>Plus error checking of course.
>>
>>But I don't know if control.next/previous or directChildren sort by Z
>>order, so I'm not sure if one approach is more accurate than the other.
>>I'm also assuming that window.control is always valid for all Window
>>objects here.
>>
>>Is there a better way of doing this, and if not, is the
>>window.control.next/previous.window method the preferred way of doing it?
>>
>>

-- 
Doug Lee, Senior Accessibility Programmer
SSB BART Group - Accessibility-on-Demand
mailto:[email protected]  http://www.ssbbartgroup.com
"While they were saying among themselves it cannot be done,
it was done." --Helen Keller

Reply via email to