说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

对话框加入滚动条后,滚动后对话框上制作的表格乱了

编辑:说三道四文库 发布时间:2018-04-26 02:37
HTML文档下载 WORD文档下载 PDF文档下载
我在一个对话框上面画了一个表格的,由于表格比较大的,我加入了滚动条的,滚动条可以滚动的,但是上面表格却花掉了,乱了。
//水平滚动条
void CPrint::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
// TODO: Add your message handler code here and/or call default
SCROLLINFO scrollinfo; 
    GetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
    switch (nSBCode) 

        case SB_LEFT: 
            ScrollWindow((scrollinfo.nPos-scrollinfo.nMin)*10,0); 
            scrollinfo.nPos = scrollinfo.nMin; 
            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
//pHScrollbar.SetScrollPos(pHScrollbar.GetScrollPos()-10);
            break; 
        case SB_RIGHT: 
            ScrollWindow((scrollinfo.nPos-scrollinfo.nMax)*10,0); 
            scrollinfo.nPos = scrollinfo.nMax; 
            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
            break; 
        case SB_LINELEFT: 
            scrollinfo.nPos -= 1; 
            if (scrollinfo.nPos<scrollinfo.nMin) 

                scrollinfo.nPos = scrollinfo.nMin; 
                break; 

            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
            ScrollWindow(10,0); 
            break; 
        case SB_LINERIGHT: 
            scrollinfo.nPos += 1; 
            if (scrollinfo.nPos>scrollinfo.nMax) 

                 scrollinfo.nPos = scrollinfo.nMax; 
                 break; 

            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
            ScrollWindow(-10,0); 
            break; 
        case SB_PAGELEFT: 
            scrollinfo.nPos -= 5; 
            if (scrollinfo.nPos<scrollinfo.nMin) 

                scrollinfo.nPos = scrollinfo.nMin; 
                break; 

            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
            ScrollWindow(10*5,0); 
            break; 
        case SB_PAGERIGHT: 
            scrollinfo.nPos += 5; 
            if (scrollinfo.nPos>scrollinfo.nMax) 

                scrollinfo.nPos = scrollinfo.nMax; 
                break; 

            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
            ScrollWindow(-10*5,0); 
            break; 
        case SB_THUMBPOSITION: 
            break; 
        case SB_THUMBTRACK: 
            ScrollWindow((scrollinfo.nPos-nPos)*10,0); 
            scrollinfo.nPos = nPos; 
            SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL); 
            break; 
       case SB_ENDSCROLL: 
            break; 


CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

//垂直滚动条
void CPrint::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
// TODO: Add your message handler code here and/or call default
SCROLLINFO scrollinfo; 
    GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 
    switch (nSBCode) 

        case SB_BOTTOM: 
            ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10); 
            scrollinfo.nPos = scrollinfo.nMax; 
            SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
            break; 
        case SB_TOP: 
            ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10); 
            scrollinfo.nPos = scrollinfo.nMin; 
            SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 
            break; 
       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); 
 //ScrollWindow(0,-10,NULL,NULL);   
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); 
break; 
case SB_PAGEUP: 
scrollinfo.nPos -= 5; 
if (scrollinfo.nPos<scrollinfo.nMin) 

scrollinfo.nPos = scrollinfo.nMin; 
break; 

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 
ScrollWindow(0,10*5); 
break; 
case SB_PAGEDOWN: 
scrollinfo.nPos += 5; 
if (scrollinfo.nPos>scrollinfo.nMax) 

scrollinfo.nPos = scrollinfo.nMax; 
break; 

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 
ScrollWindow(0,-10*5); 
break; 
case SB_ENDSCROLL: 
break; 
case SB_THUMBPOSITION: 
break; 
case SB_THUMBTRACK: 
ScrollWindow(0,(scrollinfo.nPos-nPos)*10); 
scrollinfo.nPos = nPos; 
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 
break; 


CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
各位给看看的,很急的,等待
眼花的代码。这个东西,自己先横后纵向的进行调试就知道了。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘