@msdn=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarfunctions/getscrollinfo.asp @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetScrollInfo API !!!!C# Signature: [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetScrollInfo(IntPtr hwnd, int fnBar, ref SCROLLINFO lpsi); !!!!VB.Net Signature: <DllImport("user32.dll", SetLastError:=True)> _ Public Function GetScrollInfo(hWnd As IntPtr, _ <MarshalAs(UnmanagedType.I4)>fnBar As SBOrientation, _ <MarshalAs(UnmanagedType.Struct)>ByRef lpsi As SCROLLINFO) As Integer End Function !!!!VB Signature: Declare Function GetScrollInfo Lib "user32" (ByVal hWnd As IntPtr, ByVal fnBar As ScrollBarDirection, ByRef lpsi As SCROLLINFO) As Integer !!!!C# User-Defined Types: [SCROLLINFO], [SBOrientation], [ScrollInfoMask] !!!!Notes: None. !!!!Tips & Tricks: Please add some! !!!!C# Sample Code: // Returns the width of a UserControl containing a RichTextBox // such that no horizontal scrollbar will be needed public enum ScrollInfoMask : uint { SIF_RANGE = 0x1, SIF_PAGE = 0x2, SIF_POS = 0x4, SIF_DISABLENOSCROLL = 0x8, SIF_TRACKPOS = 0x10, SIF_ALL = (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS), } public enum SBOrientation : int { SB_HORZ = 0x0, SB_VERT = 0x1, SB_CTL = 0x2, SB_BOTH = 0x3 } [Serializable, StructLayout(LayoutKind.Sequential)] struct SCROLLINFO { public int cbSize; // (uint) int is because of Marshal.SizeOf public uint fMask; public int nMin; public int nMax; public uint nPage; public int nPos; public int nTrackPos; } public int PreferredWidth { get { int MINWIDTH = 200; int BORDERWIDTH = SystemInformation.Border3DSize.Width; int SCROLLBARWIDTH = SystemInformation.VerticalScrollBarWidth; SCROLLINFO si = new SCROLLINFO(); si.cbSize = Marshal.SizeOf( si ); si.fMask = (int) ScrollInfoMask.SIF_RANGE; GetScrollInfo(RichTextBox1.Handle, (int) SBOrientation.SB_HORZ, ref si); int iWidth = si.nMax - si.nMin + 2 * BORDERWIDTH + SCROLLBARWIDTH + 2; return Math.Max( MINWIDTH, iWidth ); } } !!!!VB Sample Code: Private Function GetScrollBarPageSize(ByVal hWnd As IntPtr, ByVal fnBar As Integer) As Integer Dim si As New SCROLLINFO With si .cbSize = Len(si) .fMask = ScrollInfoMask.SIF_PAGE End With Dim lRet As Integer = GetScrollInfo(hWnd, fnBar, si) If lRet <> 0 Then Return si.nPage Else Return -1 End If End Function !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: GetScrollInfo@msdn on MSDN http://msdn2.microsoft.com/en-us/library/ms651287.aspx SeeAlso: SetScrollInfo, GetScrollPos, SetScrollPos
Edit user32.getscrollinfo
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.