// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // Description: Window pattern provider interface using System.Runtime.InteropServices; namespace System.Windows.Automation.Provider { /// <summary> /// Expose an element's ability to change its on-screen position or size, /// as well as change the visual state and close it. /// </summary> [ComVisible(true)] [Guid("987df77b-db06-4d77-8f8a-86a9c3bb90b9")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] #if (NO_INTERNAL_COMPILE_BUG1080665) internal interface IWindowProvider #else public interface IWindowProvider #endif { /// <summary> /// Changes the State of the window based on the Passed enum. /// </summary> /// <param name="state">The requested state of the window.</param> void SetVisualState( WindowVisualState state ); /// <summary> /// Non-blocking call to close this non-application window. /// When called on a split pane, it will close the pane (thereby removing a /// split), it may or may not also close all other panes related to the /// document/content/etc. This behavior is application dependent. /// </summary> void Close(); /// <summary> /// Causes the calling code to block, waiting the specified number of milliseconds, for the /// associated window to enter an idle state. /// </summary> /// <remarks> /// The implementation is dependent on the underlying application framework therefore this /// call may return sometime after the window is ready for user input. The calling code /// should not rely on this call to understand exactly when the window has become idle. /// /// For now this method works reliably for both WinFX and Win32 Windows that are starting /// up. However, if called at other times on WinFX Windows (e.g. during a long layout) /// WaitForInputIdle may return true before the Window is actually idle. Additional work /// needs to be done to detect when WinFX Windows are idle. /// </remarks> /// <param name="milliseconds">The amount of time, in milliseconds, to wait for the /// associated process to become idle. The maximum is the largest possible value of a /// 32-bit integer, which represents infinity to the operating system /// </param> /// <returns> /// returns true if the window has reached the idle state and false if the timeout occurred. /// </returns> [return: MarshalAs(UnmanagedType.Bool)] bool WaitForInputIdle( int milliseconds ); /// <summary>Is this window Maximizable</summary> bool Maximizable { [return: MarshalAs(UnmanagedType.Bool)] // Without this, only lower SHORT of BOOL*pRetVal param is updated. get; } /// <summary>Is this window Minimizable</summary> bool Minimizable { [return: MarshalAs(UnmanagedType.Bool)] // Without this, only lower SHORT of BOOL*pRetVal param is updated. get; } /// <summary>Is this is a modal window.</summary> bool IsModal { [return: MarshalAs(UnmanagedType.Bool)] // Without this, only lower SHORT of BOOL*pRetVal param is updated. get; } /// <summary>Is the Window Maximized, Minimized, or Normal (aka restored)</summary> WindowVisualState VisualState { get; } /// <summary>Is the Window Closing, ReadyForUserInteraction, BlockedByModalWindow or NotResponding.</summary> WindowInteractionState InteractionState { get; } /// <summary>Is this window is always on top</summary> bool IsTopmost { [return: MarshalAs(UnmanagedType.Bool)] // Without this, only lower SHORT of BOOL*pRetVal param is updated. get; } } } |