一,使用对话框窗口自带的滚动条,在属性页面中设置即可,如下
二,OnInitDialog()函数中,添加如下滚动条初始化语句
1 SCROLLINFO vinfo; 2 vinfo.cbSize=sizeof(vinfo); 3 vinfo.fMask=SIF_ALL; 4 vinfo.nPage=50;//滚动块自身的长短,通常有如下关系:其长度/滚动条长度(含两个箭头)=nPage/(nMax+2), 5 //另外nPage取值-1时,滚动条会不见了。 6 vinfo.nMax=600;//滚动条所能滚动的最大值 7 vinfo.nMin=0;//滚动条所能滚动的最小值 8 vinfo.nTrackPos=0; 9 SetScrollInfo(SB_VERT,&vinfo);//即使上述步骤一不做,使用此条语句也可以显示滚动条
三,添加相应的WM_VSCROLL函数
1 void CMy1d0Dlg::OnVScroll(UINT nSBCode,UINT nPos, CScrollBar* pScrollBar) 2 { 3 //TODO: Add your message handler code here and/or call default 4 5 SCROLLINFO scrollinfo; 6 GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 7 8 switch (nSBCode) 9 { 10 case SB_BOTTOM: //滑块滚动到最底部 11 ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10); //滚动屏幕 12 scrollinfo.nPos = scrollinfo.nMax; //设定滑块新位置 13 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); //更新滑块位置 14 break; 15 case SB_TOP: //滑块滚动到最顶部 16 ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10); 17 scrollinfo.nPos = scrollinfo.nMin; 18 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 19 break; 20 case SB_LINEUP: //单击上箭头 21 scrollinfo.nPos -= 1; 22 if (scrollinfo.nPos<scrollinfo.nMin) 23 { 24 scrollinfo.nPos = scrollinfo.nMin; 25 break; 26 } 27 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 28 ScrollWindow(0,10); 29 break; 30 case SB_LINEDOWN: //单击下箭头 31 scrollinfo.nPos += 1; 32 if (scrollinfo.nPos>scrollinfo.nMax) 33 { 34 scrollinfo.nPos = scrollinfo.nMax; 35 break; 36 } 37 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 38 ScrollWindow(0,-10); 39 break; 40 case SB_PAGEUP: //单击滑块上方空白区域 41 scrollinfo.nPos -= 5; 42 if (scrollinfo.nPos<scrollinfo.nMin) 43 { 44 scrollinfo.nPos = scrollinfo.nMin; 45 break; 46 } 47 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 48 ScrollWindow(0,10*5); 49 break; 50 case SB_PAGEDOWN: //单击滑块下方空白区域 51 scrollinfo.nPos += 5; 52 if (scrollinfo.nPos>scrollinfo.nMax) 53 { 54 scrollinfo.nPos = scrollinfo.nMax; 55 break; 56 } 57 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 58 ScrollWindow(0,-10*5); 59 break; 60 case SB_ENDSCROLL: //鼠标离开滑块,结束滑块拖动 61 // MessageBox("SB_ENDSCROLL"); 62 break; 63 case SB_THUMBPOSITION: 64 // ScrollWindow(0,(scrollinfo.nPos-nPos)*10); 65 // scrollinfo.nPos = nPos; 66 // SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 67 break; 68 case SB_THUMBTRACK: //拖动滑块 69 ScrollWindow(0,(scrollinfo.nPos-nPos)*10); 70 scrollinfo.nPos = nPos; 71 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 72 break; 73 } 74 75 CDialog::OnVScroll(nSBCode, nPos, pScrollBar); 76 }