重载了一个CSCROLLBAR类,在ONPAINT中调用GetScrollBarInfo不成功。SCROLLBARINFO sbinfo;
ZeroMemory(&sbinfo,sizeof(SCROLLBARINFO));
sbinfo.cbSize=sizeof(SCROLLBARINFO);
if (!GetScrollBarInfo(&sbinfo))
{
CString sss;
sss.Format(_T("%d"),GetLastError());
MessageBox(sss);
}GetScrollBarInfo返回0

解决方案 »

  1.   

    不要在在ONPAINT中调用GetScrollBarInfo。应该在别的地方。ONPAINT时已经不能对bar操作了,否则会死循环。
      

  2.   

    如果对bar操作了,界面要RE PAINT的,还有完吗?
      

  3.   

    GetScrollBarInfo,只是读取而已。
    请问你是如何重绘SCROLLBAR的?
      

  4.   

    如果不对bar操作,读它干什么
      

  5.   

    http://www.codeproject.com/KB/dialog/coolscroll.aspx
      

  6.   

    从你的代码看应该:
    SCROLLBARINFO sbinfo;
    ZeroMemory(&sbinfo,sizeof(SCROLLBARINFO));
    sbinfo.cbSize=sizeof(SCROLLBARINFO);
    sbinfo.fMask=SIF_ALL;
    sbinfo.cbSize=sizeof(SCROLLBARINFO);
      

  7.   

    typedef struct tagSCROLLBARINFO {
      DWORD cbSize;
      RECT  rcScrollBar;
      int   dxyLineButton;
      int   xyThumbTop;
      int   xyThumbBottom;
      int   reserved;
      DWORD rgstate[CCHILDREN_SCROLLBAR+1];
    } SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
      

  8.   

    typedef struct tagSCROLLINFO {  // si not SCROLLBARINFO
        UINT cbSize; 
        UINT fMask; 
        int  nMin; 
        int  nMax; 
        UINT nPage; 
        int  nPos; 
        int  nTrackPos; 
    }   SCROLLINFO; 
    typedef SCROLLINFO FAR *LPSCROLLINFO; 
      

  9.   

    SCROLLBARINFO sbinfo;
    你定义的吗?改成:
    SCROLLINFO sbinfo;
    ZeroMemory(&sbinfo,sizeof(SCROLLINFO));
    sbinfo.cbSize=sizeof(SCROLLINFO);
    sbinfo.fMask=SIF_ALL;
    GetScrollInfo(&sbinfo);//=GetScrollInfo(&sbinfo,SIF_ALL);
      

  10.   

    GetScrollBarInfo(&sbinfo)//我要调用的是这个函数
      

  11.   

    我用的是VC60
    在 :
    void CMyScrollBar::OnPaint()
    {
    SCROLLINFO sbinfo;
    ZeroMemory(&sbinfo,sizeof(SCROLLINFO));
    sbinfo.cbSize=sizeof(SCROLLINFO);
    // sbinfo.fMask=SIF_ALL;
    // GetScrollInfo(&sbinfo,SIF_ALL);
    GetScrollInfo(&sbinfo);
    可以得到info