标签:
1.响应SPIN的消息,就是点SPIN的上键头和下键头的消息,在这个消息里改变值是以0.1步进量增减.
2.使用UpdateData(FALSE)来更新EDIT的关联的double型的变量。
创建步骤
1、首先新建一个Dialog窗口,在新建窗口中右击鼠标,添加类,如:CSpinAndEditDlg。
2、然后通过工具箱把Spin Control控件、Edit Control控件分别拖拽到Dialog窗口中,
Spin属性中设置
Alignment: Right Align
Auto Buddy:True
Set Buddy Integer: True(ps:可以不选)
"Ctrl+D"设置Edit和Spin的Tab顺序(例如Edit为1,Spin为2)(ps:如果不设置Tab 顺序,spin会显示不出来)
3、双击Spin Control控件即可在CSpinAndEditDlg.cpp中生成如下几段相应代码。
SpinAndEditDlg.h
1 #pragma once 2 //ps:测试spin按钮上下加减 3 4 // CSpinAndEditDlg 对话框 5 6 class CSpinAndEditDlg : public CDialogEx 7 { 8 DECLARE_DYNAMIC(CSpinAndEditDlg) 9 10 public: 11 CSpinAndEditDlg(CWnd* pParent = NULL); // 标准构造函数 12 virtual ~CSpinAndEditDlg(); 13 14 // 对话框数据 15 enum { IDD = IDD_DLG_SPIN_EDIT }; 16 17 protected: 18 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 19 20 DECLARE_MESSAGE_MAP() 21 public: 22 afx_msg void OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult); 23 // double m_dNum; 24 afx_msg void OnBnClickedButton1(); 25 double m_dNum; 26 };
SpinAndEditDlg.cpp
1 // SpinAndEditDlg.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "LoadDllDemo.h" 6 #include "SpinAndEditDlg.h" 7 #include "afxdialogex.h" 8 #define dMax 10.0 9 #define dMin 0.0 10 11 // CSpinAndEditDlg 对话框 12 13 IMPLEMENT_DYNAMIC(CSpinAndEditDlg, CDialogEx) 14 15 CSpinAndEditDlg::CSpinAndEditDlg(CWnd* pParent /*=NULL*/) 16 : CDialogEx(CSpinAndEditDlg::IDD, pParent) 17 , m_dNum(0) 18 { 19 20 m_dNum = 0.5; 21 } 22 23 CSpinAndEditDlg::~CSpinAndEditDlg() 24 { 25 } 26 27 void CSpinAndEditDlg::DoDataExchange(CDataExchange* pDX) 28 { 29 CDialogEx::DoDataExchange(pDX); 30 // DDX_Text(pDX, IDC_EDIT1, m_dNum); 31 DDX_Text(pDX, IDC_EDIT1, m_dNum); 32 DDV_MinMaxDouble(pDX, m_dNum, dMin, dMax); 33 } 34 35 36 BEGIN_MESSAGE_MAP(CSpinAndEditDlg, CDialogEx) 37 ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, &CSpinAndEditDlg::OnDeltaposSpin1) 38 ON_BN_CLICKED(IDC_BUTTON1, &CSpinAndEditDlg::OnBnClickedButton1) 39 END_MESSAGE_MAP() 40 41 42 // CSpinAndEditDlg 消息处理程序 43 44 45 void CSpinAndEditDlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) 46 { 47 LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR); 48 // TODO: 在此添加控件通知处理程序代码 49 if(!UpdateData(TRUE)) 50 { 51 m_dNum = 0; 52 UpdateData(FALSE); 53 return; 54 } 55 if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往上箭头 56 { 57 m_dNum = m_dNum + 0.1; 58 } 59 else if(pNMUpDown->iDelta == 1) // 如果此值为, 说明点击了Spin的往下箭头 60 { 61 m_dNum = m_dNum - 0.1; 62 } 63 if(m_dNum > dMax || m_dNum < dMin) 64 { 65 UpdateData(TRUE); 66 } 67 UpdateData(FALSE); 68 *pResult = 0; 69 } 70 71 72 void CSpinAndEditDlg::OnBnClickedButton1() 73 { 74 UpdateData(TRUE); 75 m_dNum; 76 }
用spin和edit控件来用spin控制edit里面小数的增减
标签:
原文地址:http://www.cnblogs.com/lpxblog/p/4900246.html