• vs2008 edit spin 十六进制实现


    由于做的东西中涉及到一个控件,查了一下叫spin box,但是,spin box控件只在对话框里面才能使用,而且比较麻烦,更何况还要用十六进制,查到就有可多edit+spin来做,后来找到一个样例着手开始做,做到后来发现只支持十进制,于是就自己尝试着来做
    首先说明一下我做的spin box的目的效果:
    1、可以直接输入
    2、点击上下箭头加减1
    说明:所有过程都是十六进制
    接下来介绍一下edit+spin的使用
    1、控件属性设置:
    Spin:①Auto Buddy:True②Set Buddy Integer:False③Arrow Keys:True
    关于第二点说明一下:本来参考别人的是True,后来发现一直是十进制,十六进制显示不了,查看微软注释就明白了:Set Buddy Integer,指定数值调节钮控件在它的位置改变时设置合作者窗口的文本。
    Edit:默认
    2、变量定义及事件添加
    ①在窗口类里面定义两个变量:
    CSpinButtonCtrl m_spinAddress;
    CString m_editAddress;
    ②DoDataExchange(CDataExchange* pDX)函数里面关联控件跟变量(关于这个参考MSDN)
    DDX_Control(pDX, IDC_SPIN_ADDRESS, m_spinAddress);
    DDX_Text(pDX, IDC_EDIT_ADDRESS, m_editAddress);
    ③在spin控件添加UDN_DELTAPOS(指示控件的位置即将更改)
    3、OnDeltaposSpinAddress(NMHDR *pNMHDR, LRESULT *pResult)事件内容

     

    void CSolutionDlg::OnDeltaposSpinAddress(NMHDR *pNMHDR, LRESULT *pResult)
    {
        LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
        // TODO: 在此添加控件通知处理程序代码
    
        UpdateData(TRUE);    //用控件的值更新控件变量的值
    
        if(pNMUpDown->iDelta > 0)       //spin往上
        {
            if(!m_editAddress.IsEmpty())
            {
                int value = _tcstoul(m_editAddress, 0, 16);
                value ++;
                m_editAddress.Format("%X", value);
            }
        }
        else if(pNMUpDown->iDelta < 0)
        {
            if(!m_editAddress.IsEmpty())
            {
                int value = _tcstoul(m_editAddress, 0, 16);
                value --;
                m_editAddress.Format("%X", value);
            }
        }
        
        UpdateData(FALSE);    //用控件变量的值更新控件
        *pResult = 0;
    }

     

     

    补充小知识:UpdateData()
    对于可以接收数据的控件,如编辑控件来说,UpdateData()函数至关重要。当控件内容发生变化时,对应的控件变量的值并没有跟着变化,同样,当控件变量值变化时,控件内容也不会跟着变。
    UpdateData()函数就是解决这个问题的。
    UpdateData(true); 把控件内容装入控件变量
    UpdateData(false); 用控件变量的值更新控件

    最后补一张成果靓照

  • 相关阅读:
    excel导出字符串
    Unity shader学习之屏幕后期处理效果之Bloom效果
    Unity shader学习之屏幕后期处理效果之高斯模糊
    Unity shader学习之屏幕后期处理效果之均值模糊
    Unity之Vector3.SignedAngle实现
    Unity shader学习之屏幕后期处理效果之边缘检测
    Unity shader学习之屏幕后期效果之调整屏幕亮度,饱和度,对比度
    Unity shader学习之Grab Pass实现玻璃效果
    Unity shader学习之菲涅耳反射
    策略模式学习三---总结
  • 原文地址:https://www.cnblogs.com/quantumplan/p/3241340.html
Copyright © 2020-2023  润新知