CSpinButtonCtrl的说明

CSpinButtonCtrl 是vc中的spin控件,“旋转按钮控件”(也称为上下控件)是一对箭头按钮,用户点击它们来增加或减小某个值。一个旋转控件通常是与一个相伴的控件一起使用的,这个控件称为“伙伴窗口”。一个旋转按钮控件可以自动定位在它的伙伴窗口的旁边,看起来就像一个单一的控件。
  OnInitDialog函数中设置控件数值范围: 
  SetRange(0,255); 
  通常,将一个旋转按钮控件与一个编辑控件一起使用,以提示用户进行数字输入。点击向上箭头使当前位置向最大值方向移动,而点击向下箭头使当前位置向最小值的方向移动。缺省时,最小值是100,最大值是0,当用户点击向上箭头则减少数值,而点击向下箭头则增加它,这看起来就像颠倒一样,因此我们还需使用成员函数CSpinButtonCtrl::SetRange来改最大和最小值。 
  (1)旋转按钮控件常用的风格 参考属性页 
  (2)旋转按钮控件的基本操作 
  基本操作包括基数、范围、位置设置和获取,分别说明如下: 
  成员函数SetBase是用来设置其基数的,其原型如下: 
  int SetBase(int nBase); 
  此成员函数用来设置一个旋转按钮控件的基数.这个基数值决定了伙伴窗口显示的数字是十进制的还是十六进制的.十六进制的数总是无符号的;十进制的数是有符号的.如果成功则返回先前的基数值,  
  获取一个旋转按钮控件的基数的成员函数:UINT GetBase()const; 
  成员函数SetPos、SetRange是用来设置一个旋转按钮控件的当前位置和范围,其原型如下: 
  int SetPos(int nPos); 
  void SetRange(int nLower,int nUpper); 
  int GetPos()const; 
  void GetRange(int& lower,int& upper)const; 

旋转按钮控件的通知消息 
  旋转按钮控件的通知消息只有一个:UDN_DELTAPOS,它表示控件的位置将要改变。 
  用ClassWizard可以映射此消息,在此消息的处理函数中有个NM_UPDOWN结构 
  typedef struct _NM_UPDOWN{ 
  NMHDR hdr; //通知代码的其他信息 
  int iPos; //当前位置 
  int iDelta; //位置的增减量,单击向上箭头此值为负数 
  }NMUPDOWN,FAR* LPNMUPDOWN; 
  应用实例:用Spin控件完成对字符的增减  
  void CTestDlg::OnDeltaposSpin3(NMHDR* pNMHDR, LRESULT* pResult) 
  { 
  NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; 
  if(pNMUpDown->iDelta == 1) //点击了Spin的往下箭头 
  { 
  } 
  else if(pNMUpDown->iDelta == -1) //点击了Spin的往上箭头 
  { 
  } 
  *pResult = 0; 
  } 
  1: 假设你编辑框为IDC_EDIT , SPIN按钮为IDC_SPIN . 
  2: Ctrl + W , 进入Class Wizard , 在Object IDs列选择IDC_SPIN , 在Messages列选择UDN_DELTAPOS , 点击"Add Function" 按钮.将弹出"OnDeltaposSpin"的对话框 ,点OK 添加这个函数.然后点"Edit Code" , 进入新添加的函数里 . 
  3: 将会新添加一个函数. 
  void CTestDlg::OnDeltaposSpin(NMHDR* pNMHDR, LRESULT* pResult) . . . 
  4: 添加如下代码: 
  void CTestDlg::OnDeltaposSpin(NMHDR* pNMHDR, LRESULT* pResult) 
  { 
  NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; 
  CWnd* pWnd = (CWnd*)GetDlgItem(IDC_EDIT);  CString strValue ; 
  pWnd->GetWindowText(strValue); 
  if(pNMUpDown->iDelta == 1)  { 
  if(!strValue.IsEmpty()) 
  { 
  strValue.SetAt(0 , strValue[0] + 1);  pWnd->SetWindowText(strValue);  } } 

转载于:https://www.cnblogs.com/cwbo-win/articles/3380555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值