richTextBox滾動條問題!  各位,如果我的richTextBox滾動條最大值大于65535時,如何才能獲取到這個最大值,我用GetscrollInfo或GetScrollRange函數時,獲得的最大值永遠是65535,請問我要如何才能獲取到真實的最大.
  好像WM_VSCROll支持的就是16位(65535).  GetScrollInfo(intptr hwnd,int nbar,tagScrollInfo info);
  tagScrollInfo的結构為  public struct tagScrollInfo
{
   uint nSize;
   uint fMask;
   int  nMax;
   int  nMin;
   int  npos;
   int TracePos;
}如何詳細用這個GetScrollInfo以及tagScrollInfo這個參數,誰能給我個詳細代碼??
好像msdn上說用GetScrollInfo就能解決滾動條16位的問題.
謝謝!!!

解决方案 »

  1.   


    //Signature:
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool GetScrollInfo(IntPtr hwnd, int fnBar, ref SCROLLINFO lpsi);
    //User-Defined Types:
    [StructLayout(LayoutKind.Sequential)]
    struct SCROLLINFO
    {
        public uint cbSize;
        public uint fMask;
        public int nMin;
        public int nMax;
        public uint nPage;
        public int nPos;
        public int nTrackPos;
    }private enum ScrollBarDirection
    {
        SB_HORZ = 0,
        SB_VERT = 1,
        SB_CTL = 2,
        SB_BOTH = 3
    }private enum ScrollInfoMask
    {
        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
    }// Returns the width of a UserControl containing a RichTextBox
    //  such that no horizontal scrollbar will be needed
    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) ScrollBarDirection.SB_HORZ, ref si );      int iWidth = si.nMax - si.nMin + 2 * BORDERWIDTH + SCROLLBARWIDTH + 2;    
          return Math.Max( MINWIDTH, iWidth );
        } 
    }
      

  2.   

    樓上還是不行啊呀,得到的最大值也只能是65535.
    請問高手們還有沒有另外一些方法啊.
    當richTextBox內容過多時,滾動條的值要如何設置.
    目前我做的跟msn介面一樣,滾動條會自動排放.但是,當內容過多,也就是滾動條的值超過65535時,這時滾動條值就不正確了
      

  3.   

    int最大就是支持到65535,超不过这个数就不一定是什么了,你换一种定义尝试一下
      

  4.   

    不行啊int是代表Int32應該能達到2的31次方,比65535大得多了,改為long也不行1
      

  5.   

    暈,我用long,本來long的值就比int32大,但結果還是一樣.這應該不跟定義類型值的關系,msdn上具体也有講過這個問題,不過解決方法我還是沒弄懂,所以高手們知道的話,請告訴小弟我一下.3Q
      

  6.   

    有沒有人幫忙下啊??已經都過這麼久了,我也找不到方法解決,分不夠可再加一百分,只要解決就行
    玩過msn的就知道他的介面滾動條做得是多麼好!