急问?对话框滚动条的使用

bobstar 2003-10-21 10:36:27
我在对话框属性里面加入了水平和垂直滚动条,希望能通过它们看到对话框中看不到的地方,问如何实现,谢谢!!!!!!!!!!!!
...全文
259 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsc2001 2004-03-15
  • 打赏
  • 举报
回复
先创建滚动条
pHScrollbar.Create(SBS_HORZ | SBS_BOTTOMALIGN | WS_CHILD, CRect(5, 5, 100, 30), this, 100);
pHScrollbar.ShowScrollBar();

pVScrollbar.Create(SBS_VERT | SBS_RIGHTALIGN | WS_CHILD, CRect(100, 0, 120, 100), this, 200);
pVScrollbar.ShowScrollBar();
if(IsWindow(pHScrollbar.GetSafeHwnd()))
pHScrollbar.MoveWindow(81,rcBounds.bottom-16,rcBounds.right-97,15,TRUE);
if(IsWindow(pVScrollbar.GetSafeHwnd()))
pVScrollbar.MoveWindow(rcBounds.right-16,26,15,rcBounds.bottom-42,TRUE);
nalo 2004-03-15
  • 打赏
  • 举报
回复
在对话框的OnInitDialog()中加入:
SetScrollRange(SB_HORZ, 0, nMax, TRUE);
响应WM_HSCROLL消息,在其中加入:
CYourDlg::OnHScroll(...)
{
SCROLLINFO scrollInfo;
GetScrollInfo(SB_HORZ, &scrollInfo, SIF_ALL);
switch (nSBCode)
{
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_LEFT:
ScrollWindow((scrollInfo.nPos - scrollInfo.nMin) * 10, 0);
scrollInfo.nPos = scrollInfo.nMin;
SetScrollInfo(SB_HORZ, &scrollInfo, SIF_ALL);
break;
case SB_RIGHT:
ScrollWindow(-(scrollInfo.nMax - scrollInfo.nPos) * 10, 0);
scrollInfo.nPos = scrollInfo.nMax;
SetScrollInfo(SB_HORZ, &scrollInfo, SIF_ALL);
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_ENDSCROLL:
break;
case SB_THUMBPOSITION:
break;
case SB_THUMBTRACK:
ScrollWindow((scrollInfo.nPos - nPos)*10, 0);
scrollInfo.nPos = nPos;
SetScrollInfo(SB_HORZ, &scrollInfo, SIF_ALL);
break;
}
}
垂直滚动条类似
flyelf 2003-10-21
  • 打赏
  • 举报
回复
如果控件太多,可以考虑使用tabctrl分开成几个页面
或者直接使用formview来实现
smallsix 2003-10-21
  • 打赏
  • 举报
回复
什么意思??? 对话框的水平和滚动条是加在对话框中的,用来看对话框中的但在屏幕上无法显示的对话框部分,不用实现,加上就能用
bobstar 2003-10-21
  • 打赏
  • 举报
回复
请问是怎么加上去的,我是通过在对话框的属性对话对话框中选择Styles标签中的horizontal
scroll 和 vertical scroll加入水平和垂直滚动条的,然后由于在对话框中作了一些图形看不全,希望通过滚动条看到其他部分,可是没有反应阿,是不是还需要添加什么东西阿?

谢谢!
wuxfBrave 2003-10-21
  • 打赏
  • 举报
回复
用CFormView做好了

15,979

社区成员

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

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