对话框的滚动条如何用啊

zyq654321 2002-02-16 09:26:50
我已在属性中选中了vertical scroll,但还是不行
...全文
2294 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldnew 2002-03-01
  • 打赏
  • 举报
回复
各位,怎么判断目前的内容满了滚动条出现,

就是说,滚动条自动出现的情况下(如在ClistCtrl里),在没有滚动条,和有滚动条时,怎么得到界面上的这两中状态哦
chatboy2000 2002-03-01
  • 打赏
  • 举报
回复
谁有visual hdl的教程(中文),
chatboy2000@yeah.net
谢谢各位大虾帮忙
chatboy2000 2002-03-01
  • 打赏
  • 举报
回复
谁有visual hdl的教程(中文),
chatboy2000@yeah.net
谢谢各位大虾帮忙
lily311 2002-03-01
  • 打赏
  • 举报
回复
自己算啦!比如手工或通过相关函数得到当前一页有多少行.超出就滚动!
shaohua 2002-02-27
  • 打赏
  • 举报
回复
如果需要手动添加滚动条或控制滚动条的滚动位置,我有代码!
itwxf@student.hunnu.edu.cn
shaohua 2002-02-27
  • 打赏
  • 举报
回复
如果需要手动添加或控制滚动条控件,我可以提供现成代码。
itwxf@student.hunnu.edu.cn
shaohua 2002-02-27
  • 打赏
  • 举报
回复
如果需要手动添加或控制滚动条控件,我可以提供现成代码。
itwxf@student.hunnu.edu.cn
freeboy777 2002-02-27
  • 打赏
  • 举报
回复
当滚动条状态发生变化时 本身不产生消息 而是dialog产生
cmpp 2002-02-27
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/544/544226.xml
bzjbest 2002-02-26
  • 打赏
  • 举报
回复

  首先用应用向导产生一名为Scro的基于对话框的应用,再利用对话框编辑器加入两个一样的水平滚动条,两个滚动条的ID分别取IDC—SCR1和IDC—SCR2,结果如下图,将其作为本文的示例。


对话框编辑器虽然允许将滚动条控件加进对话框中,而且,类向导允许加入数据成员,但要使这两个水平滚动条工作,还必须加进一些代码。就本例程序,当用户拖动滚动块或用鼠标滚动箭头时,滚动条就会向对话框发送WM—HSCROLL消息,对话框消息控制函数必须对这一消息进行处理,然后将滚动块定位到相应的位置上。

  一般情况下,对话框中的每一控件都有自己独立的消息控制函数,但滚动条控件则有点不同,因为对话框中所有的水平滚动条都只有一个WM—HSCROLL消息控制函数,而所有的垂直滚动条都只有一个WM—VSCROLL消息控制函数。如果对话框中只有一个水平(或垂直)滚动条,则不会出现什么问题,问题是本例程序有一特殊之处,笔者有意设置了两个水平滚动条,可按前述都用一个WM—HSCROLL消息控制函数,所以程序必须能识别出哪个滚动条在发送消息。下面是具体步骤。

  1.定义滚动范围的最大值和最小值。

  在ScroDlg.h类声明中的最上面加入下面两行。

  enum {nMin=0};

  enum {nMax=100};

  2.修改OnInitDialog函数,初始化滚动范围,决定那一个滚动条发送消息。

  // TODO: Add extra initialization here

CScrollBar* pSB = (CScrollBar*) GetDlgItem(IDC—SCR1);

  pSB-〉SetScrollRange(nMin, nMax);

  pSB = (CScrollBar*) GetDlgItem(IDC_SCR2);

  pSB-〉SetScrollRange(nMin, nMax);

  3.利用ClassWizard在CScroDlg中加入滚动条消息控制函数,即选择WM—HSCROLL消息,然后加进OnHScroll成员函数,并在其中加入如下代码:

  void CScroDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

  {// TODO: Add your message handler code here and/or call default

  int nTemp1, nTemp2;

nTemp1 = pScrollBar-〉GetScrollPos();

  switch(nSBCode)

  { case SB—THUMBPOSITION:

pScrollBar-〉SetScrollPos(nPos);

break;

case SB—LINELEFT: // 左按钮

nTemp2 = (nMax - nMin) / 10;

  //划为10等份

if ((nTemp1 - nTemp2) 〉 nMin) { nTemp1 -= nTemp2; }

else { nTemp1 = nMin; }

pScrollBar-〉SetScrollPos(nTemp1);

break;

case SB—LINERIGHT: // 右箭头按钮

nTemp2 = (nMax - nMin) / 10;

if ((nTemp1 + nTemp2) 〈 nMax) { nTemp1 += nTemp2; }

else { nTemp1 = nMax; }

pScrollBar-〉SetScrollPos(nTemp1);

break; }

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

  4.现在可以编译、测试程序了。
lvxn 2002-02-26
  • 打赏
  • 举报
回复
滚动条是被动控件,在但文档和多文档中MFC已加入了消息响应代码,
遗憾的是在Dialog中没有,也就是拟必须自己响应啦!
详细的看MFC原代码!
lyneville 2002-02-26
  • 打赏
  • 举报
回复
只有内容超出范围时才有滚动条显示出来
marxshen 2002-02-26
  • 打赏
  • 举报
回复
111222你在干吗?
ibaobao 2002-02-26
  • 打赏
  • 举报
回复
test
111222 2002-02-26
  • 打赏
  • 举报
回复
我打你家玻璃!
raohui2008 2002-02-25
  • 打赏
  • 举报
回复
选中的控件是否支持滚动条,如果是选中RichEdit控件,那末,只有在输入的字符超过一行的宽度时,滚动条才会显示出来。如果手动添加滚动条控件,需要添加相应的消息响应函数。
richincsdn2 2002-02-25
  • 打赏
  • 举报
回复
shi
rtm 2002-02-24
  • 打赏
  • 举报
回复
怎么找不到控件工具箱?
yangsj 2002-02-24
  • 打赏
  • 举报
回复
有控件啊,的自己编写函数!
arvid_gs 2002-02-24
  • 打赏
  • 举报
回复
Win32 API的两个滚动条函数SetScrollInfo和GetScrollInfo.
这两个函数完成SetScrollRange,SetScrollPos,GetScrollRange,GetScrollPos等四个函数的全部功能,并增加了两个新特性.及滚动条大小控制(SetScrollInfo函数)和函数可以处理32位值(两个函数).
这两个函数调用都要用到一个参数及SCROLLINFO结构类型的实例.此结构包含滚动条所用的重要信息(滚动条所需内存大小,滚动条的最小值,最大值,页大小,当前位置等).你可以对结构的成员赋值后调用SetScrollInfo函数以设置滚动条.并通过GetScrollInfo得到当前位置.
但在你实际应用滚动条时,WINDOWS不默认处理滚动条,你自己编写WM_VSCROLL或WM_HSCROLL消息,而这两个消息只是简单的Si.nPos--;或Si.nPos++,即使当滚动条位置已经指向开始或结束位置它也会再减1或加1,这就会越界.
因此你在程序中得自己控制滚动条位置(一般用min和max宏),以免它越界.
太复杂了把,没有必要,msdn 里有一个例子可以参考的.



加载更多回复(5)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧