滚动控件及其范例(VC++学习笔记)

设置滚动控件范围附加初始化工作。

Code Section:

BOOL CScrollDlg::OnInitDialog()
{
       //omit    
    CScrollBar *pScroll=(CScrollBar*)GetDlgItem(IDC_SCROLL);
      pScroll->SetScrollRange(-100,100);
      pScroll->SetScrollPos(0);
      SetDlgItemInt(IDC_CURPOS,0);
      return TRUE;  // return TRUE  unless you set the focus to a control
}

 

滚动事件处理信息:

Code Section

void CScrollDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	//获得原有的流动条位置
	int iPos = pScrollBar->GetScrollPos();
	/*CString str;
	str.Format("%d",iPos);
	MessageBox(str);*/
	//根据不同的拖动方式设置新的滚动位置
	
	switch(nSBCode){
	//向右滚动一行
	case SB_LINERIGHT:
		iPos+=1;
		break;
	//向左滚动一行
	case SB_LINELEFT:
		iPos-=1;
		break;
	//向右滚动一页
	case SB_PAGERIGHT:
		iPos+=10;
		break;
	//向左滚动一页
	case SB_PAGELEFT:
		iPos-=10;
		break;
	//直接拖动滚动块
	case SB_THUMBTRACK:
		iPos=nPos;
		break;
	default:
		break;
	}
	//滚动条的最大位置不超过100,最小位置不小于-100;
	if(iPos<-100) iPos=-100;
	if(iPos>100) iPos = 100;
	//必须手动更新滚动条的当前位置
	pScrollBar->SetScrollPos(iPos);
	//显示滚动条的当前位置
	SetDlgItemInt(IDC_CURPOS,iPos);
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

根据文本框的输入改变滚动条的位置。

Code Section:

void CScrollDlg::OnChangeCurpos() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	CString str;
	GetDlgItemText(IDC_CURPOS,str);
	str.TrimLeft();
	str.TrimRight();
	int iPos = 0;
	if(str != "-1" && str != ""){
		if(!UpdateData()){
			return;
		}
		iPos = m_iCurPos;
	}
	CScrollBar *pScroll=(CScrollBar*)GetDlgItem(IDC_SCROLL);
	pScroll->SetScrollPos(iPos);
	
}
此条目发表在 c/c++ 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>