如何让窗口的滚动条滚动

gengchl 2008-11-28 11:56:10
我想在窗口或对话框中添加控件,而控件数量多,有些已经超出窗口的范围。我这时已经为窗口添加了竖向滚动条,运行程序后,窗

口的滚动条可以看见,超出窗口范围的控件也能看到处在窗口范围内的部分(就是假如一个按钮的上半部分在窗口内,下半部分在窗

口外,可以看到窗口内的部分,说明控件已经加入了)。但是窗口的滚动条无法滚动,请问这应该怎么解决?

还请问,大家用VC编程时,添加的资源超出了窗口的范围,这时怎么办?是用手写资源文件吗?
...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengchl 2008-11-29
  • 打赏
  • 举报
回复
哦,我去试试,先谢了!!
Tinary3v0 2008-11-29
  • 打赏
  • 举报
回复
在资源中手动添加滚动条以后,响应Dialog的WM_VSCROLL消息: (不好意思了,占的代码过来,我测试通过)
详细请参见:http://topic.csdn.net/t/20021218/15/1273181.html

void C**Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
int h = 10;
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
GetScrollInfo(SB_VERT,&si);
int nOldPos = si.nPos;

switch(nSBCode)
{
case SB_LINEDOWN:
si.nPos = min(si.nPos+h, si.nMax);
break;
case SB_PAGEDOWN:
si.nPos = min(si.nPos+h*10, si.nMax);
break;
case SB_LINEUP:
si.nPos = max(si.nPos-h, si.nMin);
break;
case SB_PAGEUP:
si.nPos = max(si.nPos-h*10, si.nMin);
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
case SB_TOP:
si.nPos = si.nMin;
break;
case SB_BOTTOM:
si.nPos = si.nMax;
break;
}
SetScrollInfo(SB_VERT,&si);
ScrollWindow(0, nOldPos - si.nPos);

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

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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