使用MFC中的“编辑框”处理滑块控件

日出大道

使用适当的Slider Control和对值的UpdatingData的机制有很好的理解时,我遇到了问题。这是一个非常简单的程序,应该可以帮助我理解问题。

看一下我的代码:

// TestDialog.cpp : implementation file
//

#include "stdafx.h"
#include "ControlsandVariables.h"
#include "TestDialog.h"
#include "afxdialogex.h"


// TestDialog dialog

IMPLEMENT_DYNAMIC(TestDialog, CDialog)

TestDialog::TestDialog(CWnd* pParent /*=NULL*/)
    : CDialog(TestDialog::IDD, pParent)
    , editbox_value(0)
    , slider_value(0)
{

}

TestDialog::~TestDialog()
{
}

void TestDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_SLIDER1, slider_ctrl);
    DDX_Text(pDX, IDC_EDIT1, editbox_value);
    DDV_MinMaxInt(pDX, editbox_value, 0, 99);
    DDX_Slider(pDX, IDC_SLIDER1, slider_value);
}


BEGIN_MESSAGE_MAP(TestDialog, CDialog)
    ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &TestDialog::OnNMCustomdrawSlider1)
    ON_EN_CHANGE(IDC_EDIT1, &TestDialog::OnEnChangeEdit1)
END_MESSAGE_MAP()


// TestDialog message handlers


void TestDialog::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
    // TODO: Add your control notification handler code here
    
    int value = slider_ctrl.GetPos();
    editbox_value = value;
    UpdateData(TRUE);
    
    //editbox_value = slider_value;
    //UpdateData(TRUE);
    *pResult = 0;
}

我同时更改滑块和编辑框上的值时遇到问题。如果我使用UpadateData(TRUE)滑块的值正在更改,但编辑框保持不变。
另一方面,如果我将UpdateData (FALSE)滑块设置为不变,但editbox的值正在更改,并且迭代后会恢复为0.如何实现滑块和editbox都相互依赖而更改其值的状态。我想提一下,这是MFC库的WindowsEmbedded 2013版本,不适用于本地Windows。

国家发言人

你必须为创建两个控制类型变量CEditCSliderCtrl例:

  • m_cedit
  • m_slider

在此处输入图片说明

在此处输入图片说明

笔记:

  • CSliderCtrlWM_HSCROLL信息
  • 确保CEdit Number属性设置为True

将以下函数添加到Dlg标头类:

afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnEnChangeEdit();

在CPP中:

BEGIN_MESSAGE_MAP(CMFCSpinerDlg, CDialogEx)
    ON_WM_HSCROLL() // Called when Slider is scrolled
    ON_EN_CHANGE(IDC_EDIT1, OnEnChangeEdit) // Called when CEdit change value
END_MESSAGE_MAP()


void CMFCSpinerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    CSliderCtrl* pSlider = reinterpret_cast<CSliderCtrl*>(pScrollBar);

    // You can have multiple sliders: Check which one sent the notification  
    if (pSlider == &m_slider)
    {
        CString strSliderValue;
        int iValue = m_slider.GetPos(); // Get Slider value
        strSliderValue.Format("%d", iValue); 

        m_cedit.SetWindowText(strSliderValue); // Change CEdit Value
    }
}

void CMFCSpinerDlg::OnEnChangeEdit()
{
    CString strEditValue;
    m_cedit.GetWindowText(strEditValue);
    int iCeditValue = atoi(strEditValue);
    
    // do other check on value ...
    m_slider.SetPos(iCeditValue); // set Slider value
}

通过做这个 :

  • 如果更改CSliderCtrl值->CEdit更改
  • 如果更改CEdit值->CSliderCtrl更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将SpinControl关联到MFC中的其他编辑框

来自分类Dev

如何将在编辑框中键入的值分配给MFC中的变量

来自分类Dev

动态将自定义控件中的编辑框绑定到托管bean

来自分类Dev

来自编辑框控件的值未通过 SSJS 保存在 Notes 文档中

来自分类Dev

MFC:在编辑框中表示邻接矩阵

来自分类Dev

从编辑框中获取文本

来自分类Dev

使用CAxDialogImpl中的ATL CEdit将编辑框添加到ATL对话框

来自分类Dev

具有默认值的重复控件中的编辑框不会在删除时更新

来自分类Dev

在Android中,如何使用Javascript在WebView中设置编辑框的值

来自分类Dev

仅使用面板中的控件,仅编辑图片框控件

来自分类Dev

如何计算多行编辑框中的行数?

来自分类Dev

加号横穿编辑框等

来自分类Dev

如何设置编辑框

来自分类Dev

Qt tablewidget 编辑框

来自分类Dev

如何在MFC SDI主窗口中添加编辑框和按钮?

来自分类Dev

从MFC中的编辑控件写入文本

来自分类Dev

如何在从数据库中检索到的编辑框中设置文本(使用php文件)

来自分类Dev

如何在从数据库中检索的编辑框中设置文本(使用php文件)

来自分类Dev

XPages中的DatePicker可以禁用编辑框,但不能使用选择器按钮完成

来自分类Dev

流氓浪潮编辑框文字

来自分类Dev

Windows API编辑框反映了SendMessage

来自分类Dev

VSTO-检索编辑框值

来自分类Dev

如何从Android中的首选项编辑框中获取数字值

来自分类Dev

写在页面编辑框中的内容未显示在Wordpress的已发布页面中

来自分类Dev

在输入到编辑框中之前,如何截取键盘输入?

来自分类Dev

Anylogic:您可以在编辑框中输入概率分布吗?

来自分类Dev

如何只允许在TInputQueryWizardPage编辑框中输入字母数字字符?

来自分类Dev

Xpages将编辑框绑定到文档中的字段,值来自视图

来自分类Dev

在编辑框中输入文字时需要启用按钮

Related 相关文章

  1. 1

    如何将SpinControl关联到MFC中的其他编辑框

  2. 2

    如何将在编辑框中键入的值分配给MFC中的变量

  3. 3

    动态将自定义控件中的编辑框绑定到托管bean

  4. 4

    来自编辑框控件的值未通过 SSJS 保存在 Notes 文档中

  5. 5

    MFC:在编辑框中表示邻接矩阵

  6. 6

    从编辑框中获取文本

  7. 7

    使用CAxDialogImpl中的ATL CEdit将编辑框添加到ATL对话框

  8. 8

    具有默认值的重复控件中的编辑框不会在删除时更新

  9. 9

    在Android中,如何使用Javascript在WebView中设置编辑框的值

  10. 10

    仅使用面板中的控件,仅编辑图片框控件

  11. 11

    如何计算多行编辑框中的行数?

  12. 12

    加号横穿编辑框等

  13. 13

    如何设置编辑框

  14. 14

    Qt tablewidget 编辑框

  15. 15

    如何在MFC SDI主窗口中添加编辑框和按钮?

  16. 16

    从MFC中的编辑控件写入文本

  17. 17

    如何在从数据库中检索到的编辑框中设置文本(使用php文件)

  18. 18

    如何在从数据库中检索的编辑框中设置文本(使用php文件)

  19. 19

    XPages中的DatePicker可以禁用编辑框,但不能使用选择器按钮完成

  20. 20

    流氓浪潮编辑框文字

  21. 21

    Windows API编辑框反映了SendMessage

  22. 22

    VSTO-检索编辑框值

  23. 23

    如何从Android中的首选项编辑框中获取数字值

  24. 24

    写在页面编辑框中的内容未显示在Wordpress的已发布页面中

  25. 25

    在输入到编辑框中之前,如何截取键盘输入?

  26. 26

    Anylogic:您可以在编辑框中输入概率分布吗?

  27. 27

    如何只允许在TInputQueryWizardPage编辑框中输入字母数字字符?

  28. 28

    Xpages将编辑框绑定到文档中的字段,值来自视图

  29. 29

    在编辑框中输入文字时需要启用按钮

热门标签

归档