• 用spin和edit控件来用spin控制edit里面小数的增减


    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 };
    View Code

    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 }
    View Code
  • 相关阅读:
    DNS服务器原理简述、搭建主/从DNS服务器并实现智能解析
    JQuery02
    JQuery01
    python05
    python04
    python03
    Liunx命令
    Python运算符及注释
    python01
    原生JDBC+mybatis
  • 原文地址:https://www.cnblogs.com/lpxblog/p/4900246.html
Copyright © 2020-2023  润新知