mfc动态添加垂直滚动条

SetScrollSizes(MM_TEXT,CSize(0,0));

例子:

在.cpp文件中添加消息响应函数OnVCScroll

void CAnalysisStatisticsView::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.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.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));
scrollinfo.nPos = nPos;  
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); 
break;  
}


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

然后在需要动态生成滚动条的位置,有:

if (nY > m_rect.bottom)
{
SetScrollSizes(MM_TEXT,CSize(0,nY));
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC的Picture Control控件中添加滚动条需要经过以下步骤: 1. 打开资源视图,找到对应的Picture Control控件,并双击打开对话框编辑器。 2. 在对话框编辑器中,找到Picture Control控件的属性框,为其添加一个滚动条控件。滚动条控件通常可以选择垂直或水平方向。 3. 在当前对话框的头文件中添加一个变量来控制滚动条的位置,例如添加一个int类型的变量scrollPos。 4. 在OnInitDialog()函数中,调用SetScrollRange()函数为滚动条控件设置滚动范围。可以根据需要设置最小值和最大值。 5. 实现滚动条的滚动事件处理函数。根据滚动条的位置,调整Picture Control控件中显示的图片,可以使用MoveWindow()函数来调整图片位置。 示例代码: 在对话框的头文件中添加以下成员变量: ```cpp CScrollBar m_scrollBar; int scrollPos; CBitmap bmpImg; CStatic m_picture; ``` 在OnInitDialog()函数中添加以下代码: ```cpp m_scrollBar.Create(SBS_VERT | WS_VISIBLE | WS_CHILD, CRect(10, 10, 20, 150), this, IDC_SCROLL_BAR); scrollPos = 0; m_picture.SetBitmap(bmpImg); m_picture.MoveWindow(CRect(10, 150 - scrollPos, 250, 350 - scrollPos)); m_scrollBar.SetScrollRange(0, 200); // 设置滚动范围为0到200 ``` 添加WM_VSCROLL消息处理函数: ```cpp void CMyDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { if (pScrollBar->GetDlgCtrlID() == IDC_SCROLL_BAR) { if (nSBCode == SB_THUMBTRACK || nSBCode == SB_THUMBPOSITION) { scrollPos = nPos; m_picture.MoveWindow(CRect(10, 150 - scrollPos, 250, 350 - scrollPos)); } } CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar); } ``` 这样,就可以在MFC的Picture Control控件中添加滚动条,并实现滚动效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值