博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSpinButtonCtrl的说明
阅读量:7092 次
发布时间:2019-06-28

本文共 2039 字,大约阅读时间需要 6 分钟。

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

你可能感兴趣的文章
技术一览表
查看>>
Python 核心编程(第二版)——正则表达式
查看>>
简单聊一聊PRINCE2与PMP的区别
查看>>
java实现图的遍历(深度优先遍历和广度优先遍历)
查看>>
基于神经网络的实体识别和关系抽取联合学习
查看>>
hdu 大明A+B
查看>>
OO第二次博客作业
查看>>
旋转效果
查看>>
主机名命名规范
查看>>
docker 参数
查看>>
ESLint 规范项目代码
查看>>
栈内存和堆内存的区别
查看>>
Spring Theme简单应用
查看>>
----uni-app之安卓手机定位权限问题----
查看>>
SQL中Case的使用方法
查看>>
CentOS7 MySQL
查看>>
[洛谷P2584][ZJOI2006]GameZ游戏排名系统
查看>>
[USACO07NOV]电话线Telephone Wire
查看>>
随机数
查看>>
单例模式和工厂模式
查看>>