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了。