MFC中Spin control的使用

本文介绍如何使用 MFC 中的 Spin Control 实现经纬度微调功能。通过 Spin 控件与编辑框配合,实现了数值的增减操作。适用于需要精确调整数值的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编写一个工具时需要对经纬度进行微调,经纬度使用度分秒的格式来呈现的。想到了用控件 Spin Control 来实现。现对这个控件的用法做一个简要的回顾。

新建一个MFC基于对话框的应用程序,工程命名为 Spinctrl,在界面中添加一个编辑框控件和一个Spin Control,实现效果:首先往编辑框中输入一个数值,然后通过 Spin Control来实现微调。

界面表现如图1-1所示,

 

图1-1 Spin Control 用例示意图

编辑框添加值变量  CString m_editNum1;

Spin Control添加控件变量 CSpinButtonCtrl m_Spin;

在初始化函数中绑定着两个控件:

[cpp]  view plain  copy
  1. int itemp = _wtoi(m_editNum1);    
  2. m_Spin.SetBuddy(GetDlgItem(itemp));   
  3. m_Spin.SetRange(0,100);  

为控件 Spin Control添加消息响应事件

[cpp]  view plain  copy
  1. void CSpinctrlDlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)  
  2. {  
  3. LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);  
  4. // TODO: 在此添加控件通知处理程序代码  
  5. UpdateData(true);  
  6. CString ss;  
  7. if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往下的箭头  
  8. {  
  9. double a;  
  10. a=wcstod(m_editNum1,NULL)-1;  
  11. ss.Format(_T("%.1f"),a);  
  12. }  
  13. else if(pNMUpDown->iDelta == 1) // 如果此值为1, 说明点击了Spin的往上的箭头  
  14. {  
  15. double a;  
  16. a=wcstod(m_editNum1,NULL)+1;  
  17. ss.Format(_T("%.1f"),a);  
  18. }  
  19. m_editNum1=ss;  
  20. UpdateData(false);  
  21. *pResult = 0;  
  22. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值