您的位置:首页 > 其它

CSpinButtonCtrl

2013-08-30 16:51 232 查看
CSpinButtonCtrl(暂且称为旋转按钮吧):

这种控件我想你应该看过,不解释。

当你看到上面图示的控件时,有没有想到,其实应该是这样的:

真的是这样的,不骗你,所以下面创建该控件时要分两步走:

第一步:创建编辑框:

添加变量:

CEdit m_edit;

处理创建:

m_edit.Create(WS_BORDER|WS_CHILD|WS_VISIBLE,CRect(0,220,100,260),this,3);

第二步:创建旋转框,并且绑定到编辑框

添加变量:

CSpinButtonCtrl m_spinBtnCtrl;

处理创建:

m_spinBtnCtrl.Create(WS_BORDER|WS_CHILD|WS_VISIBLE|UDS_ALIGNRIGHT|UDS_ARROWKEYS|UDS_SETBUDDYINT ,CRect(100,220,200,260),this,2);

m_spinBtnCtrl.SetBase(10);// 10
进制

m_spinBtnCtrl.SetRange(0,10);

绑定:

m_spinBtnCtrl.SetBuddy(&m_edit);

设置编辑框初值:

int nPos;

nPos=m_spinBtnCtrl.GetPos();

CString strPos;

strPos.Format("%d",nPos);

((CWnd*)GetDlgItem(3))->SetWindowText(strPos);

处理消息:

就像以前所说的那样,要处理WM_VSCROLL消息:

void CScrollBarView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

// TODO: 在此添加消息处理程序代码和/或调用默认

if (pScrollBar->m_hWnd==m_spinBtnCtrl.m_hWnd)

{

//MessageBox("m_spinBtnCtrl click!");

int nPos;

nPos=m_spinBtnCtrl.GetPos();

CClientDC dc(this);

CString strPos;

strPos.Format("Current value=%d",nPos);

dc.TextOut(100,220,strPos,strlen(strPos));

}

CView::OnVScroll(nSBCode, nPos, pScrollBar);

}

如此简单,是也不是,我越来越喜欢MFC了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: