按钮不能放在客户区,因为视图移动的时候按钮也要不动我想加在滚动条旁边,以前见过这种效果的,不知道怎么做

解决方案 »

  1.   

    重载 CScrollView 类 ?
      

  2.   

    估计要自己封装CScrollView.
      

  3.   

    好像是先获取水平滚动条对象,然后用SetWindowPos之类的修改它的位置。
      

  4.   

    pleasehelpme(革命尚未成功,同志仍需努力)
    还有什么办法呢?不能让按钮随着view乱跑啊是sdi工程的,而且工具栏和菜单都不可以用的happyparrot(快乐鹦鹉)
    谢谢你拉!高顶了分全给你!
      

  5.   

    找到源程序了:
    void CMagView::_HScrollBarOnSize(BOOL bModifyYBar)
    {
    CChildFrame* pFrame = (CChildFrame*)GetParentFrame();
    ASSERT(pFrame != NULL);
    CHRuler* pHRuler=(CHRuler*)pFrame->GetDlgItem(ID_VIEW_HRULER); //int iJustPos=pHRuler->IsWindowVisible()?20:0;
    int iJustPos=pFrame->m_iJustPos; CScrollBar* pHBar=GetScrollBarCtrl(SB_HORZ);
    CWnd* pParent=pHBar->GetParent();
    CRect rect; GetClientRect(rect);
    int iWidth=rect.right-rect.left; pHBar->GetWindowRect(rect);
    pParent->ScreenToClient(rect);
    int iHeight=rect.bottom-rect.top; pHBar->SetWindowPos(NULL,
    pFrame->m_wndPage.m_Width-iJustPos+2,
    rect.top,
    iWidth+iJustPos-pFrame->m_wndPage.m_Width,
    iHeight,
    SWP_NOZORDER ); if(bModifyYBar){
    CScrollBar* pVBar=GetScrollBarCtrl(SB_VERT);
    pParent=pVBar->GetParent(); pVBar->GetWindowRect(rect);
    pParent->ScreenToClient(rect);
    pVBar->SetWindowPos( NULL,
    rect.left,
    2,
    rect.right-rect.left,
    rect.bottom-rect.top+7,
    SWP_NOZORDER );
    }

    }
    这里pFrame->m_wndPage是个子窗体,用来放一些按钮。窗体的高度等于滚动条高度。
      

  6.   

    CScrollBar* pHBar=GetScrollBarCtrl(SB_HORZ);
    这里我要说明一下,GetScrollBarCtrl(SB_HORZ)只能在拆分窗口中使用。因此你的VIEW必须是个拆分窗口。如果你只需要一个窗口,那么有个技巧:先创建拆分窗口,然后将其中一个窗口的大小和位置设置到屏幕上看不到的位置就可以了。我们以前就是这么做的。然后通过这个函数就可以获取横向和纵向滚动条对象指针了。
      

  7.   

    只能是拆分窗口啊?
    我的工程很大,是sdi的,改成你说的哪个样子会不会很难