我想要得到的是当前可见的范围的尺寸(包括滚动条占有的部分),如下图:
如何获取图中的Width、Height值?
我用窗口的GetClientRect得到的是滚动条的最大范围值,而不是当前可见的范围的尺寸,请高手指点。

解决方案 »

  1.   

    楼上的方法正是我所用过的,取不到的 
    GetClientRect得到的是滚动条的最大范围值,而不是当前可见的范围的尺寸
      

  2.   

    GetWindowRect() ??
    GetScrollInfo() ??
    图太小了~
      

  3.   

    void CDlgPlatformDisk::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    SCROLLINFO scrollinfo;
    GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); int nScrollSize = 0;
    switch (nSBCode)
    {
    case SB_LINEUP:
    scrollinfo.nPos -= 1;
    if (scrollinfo.nPos<scrollinfo.nMin)
    {
    scrollinfo.nPos = scrollinfo.nMin;
    break;
    }
    SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
    ScrollWindow(0,10);
    nScrollSize = 10;
    break;
    case SB_LINEDOWN:
    scrollinfo.nPos += 1;
    if (scrollinfo.nPos>scrollinfo.nMax)
    {
    scrollinfo.nPos = scrollinfo.nMax;
    break;
    }
    SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
    ScrollWindow(0,-10);
    nScrollSize = -10;
    break;
    case SB_THUMBTRACK:
    ScrollWindow(0,(scrollinfo.nPos-nPos)*10);
    nScrollSize = (scrollinfo.nPos-nPos)*10;
    scrollinfo.nPos = nPos;
    SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
    break;
    }
    CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
    }
      

  4.   

    GetScrollBarCtrl()然后取得滚动条的长和宽
      

  5.   

    我是笨办法 希望对你有用
    SetScrollSizes(MM_TEXT , CSize(2,2));//去掉滚动条
    GetClientRect(&rect);//当前的客户区可视范围
      

  6.   

    用GetWindowRect取得主Frame的右下角。
    再把client rect下的(0,0)用ClientToScreen转化成屏幕坐标。
    以上两值想减即可。