现在的位置: 首页 > 综合 > 正文

对话框中滚动条方便用

2018年07月17日 ⁄ 综合 ⁄ 共 3010字 ⁄ 字号 评论关闭

在对话框上要应用滚动条,首先当然是要将对话框的属性vertical scroll选中(在这里只介绍纵向滚动条,横向滚动条与之原理相同)。然后是按Ctlr+w进入classwizard选中对话消息WM_OnVScroll,并添加它的响应函数,接着进入代码编辑区,写入代码:

 

void CRq::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); 

              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: 

              // MessageBox("SB_ENDSCROLL"); 

              break; 

       case SB_THUMBPOSITION: 

              // ScrollWindow(0,(scrollinfo.nPos-nPos)*10); 

              // scrollinfo.nPos = nPos; 

              // SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 

              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);

}

以上代码完成后,滚动条已可以使用了。

但是应该如何将其它控件安排在对话框呢?很简单,你想用多大的对话框就将它拉多大,只需要在对话框所用的xxxx.cpp文件的void Cxxxx::DoDataExchange(CDataExchange* pDX)函数体中写入代码:

       SetWindowPos(NULL,0,0,800,600,SWP_NOMOVE | SWP_NOZORDER);

其中800和600两个数字分别为对话框创建时的宽度和高度。

这样就可以方便地使用滚动条了。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhanghaaaa/archive/2009/02/25/3937583.aspx

抱歉!评论已关闭.