@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The TileWindows API !!!!C# Signature: The first version is for use if you want to pass null (IntPtr.Zero) to both lpRect and lpKids. [DllImport("user32.dll")] static extern int TileWindows(IntPtr hwndParent, int wHow, IntPtr lpRect, int cKids, IntPtr lpKids); This one is for non-null lpKids, but null lpRect. [DllImport("user32.dll")] static extern int TileWindows(IntPtr hwndParent, int wHow, IntPtr lpRect, int cKids, [MarshalAs(UnmanagedType.LPArray)]IntPtr[] lpKids); You would need a different version again to pass in a real RECT to lpRect, but I've not tried that one myself. Here are the constants: const int MDITILE_VERTICAL = 0; const int MDITILE_HORIZONTAL = 1; !!!!User-Defined Types: None. !!!!Notes: None. !!!!Tips & Tricks: Sample for VB.NET Enables you to define a RECT and which windows to 'attack'! ;) ' **************************************************************************** <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function EnumWindows( ByVal lpEnumFunc As EnumWindowsProc, _ ByVal lParam As IntPtr) As Boolean End Function <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="TileWindows")> _ Private Shared Function TileWindows(ByVal hwndParent As System.IntPtr, ByVal wHow As UInteger, ByVal lpRect As RECT, ByVal cKids As UInteger, ByVal lpKids() As System.IntPtr) As UShort End Function <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _ Private Shared Function GetWindowText(hWnd As IntPtr, lpString As StringBuilder, nMaxCount As Integer) As Integer End Function Private Shared Function GetWindowsTitle(hwnd As IntPtr) As String Dim sb As New StringBuilder(1024) GetWindowText(hwnd, sb, sb.Capacity) Return sb.ToString End Function Private Sub TileClassMatch(className As String, inRect As RECT, _ partialMatch As Boolean) Dim hwndLst As New List(Of IntPtr) 'Define the 'ad-hoc' routine as needed, e.g.: Dim CB As New EnumWindowsProc(Function(hwnd As IntPtr, lParam As IntPtr) Dim cln As String = GetWindowsTitle(hwnd) If partialMatch Then If className.ToLower.Contains(cln.ToLower) Then hwndLst.Add(hwnd) End If Else If className = cln Then hwndLst.Add(hwnd) End If Return True End Function) 'Call it... EnumWindows(CB, IntPtr.Zero) If hwndLst.Count > 0 Then Dim successCount As UShort = _ TileWindows(IntPtr.Zero, MDI_TILE.SKIPDISABLED, _ inRect, CUInt(hwndLst.Count), hwndLst.ToArray) MessageBox.Show(String.Concat(successCount.ToString, " windows tiled in ", vbCrLf, _ "rectangle ", inRect.Left.ToString, ", ", inRect.Top.ToString, ", ", inRect.Right.ToString, _ ", ", inRect.Bottom.ToString), "Tiling...", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub ' Jens M., 12/2/2012 ' NB! Use 'CascadeWindows' as above. ' **************************************************************************** Please add some! !!!!Sample Code: Please add some! !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: TileWindows@msdn on MSDN
Edit user32.TileWindows
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.