想在MFC中实现滚动条slider和编辑框edit的联动(改变滚动条,显示数字在编辑框),同时想要添加两个滚动条,分别控制亮度和对比度。参考了几个博客在VS2017中跑不出来。自己写了一个能运行的版本,供大家参考。这里没有给出改变对比度和亮度的函数,只是实现实现滚动条slider和编辑框edit的联动。
最终实现的效果

第一部分:滚动条和编辑框联动部分。
第一步 ,在资源试图界面找到Dialog,打开Dialog界面(这里用的是MFC基于对话框类型)

在工具箱中双击slider control,添加两个。然后同样的道理,添加两个edit control。


添加完如下图所示(前面我又自行添加了两个Static Text静态文本,修改成亮度和对比度,以此来标识,看起来更清晰)。


第二步,给滚动条(slider)添加两个变量。
一个是控件类型,另一个是值类型。下面就以其中一个滚动条为例。该控件的ID名称是IDC_SLIDER1,对应的是上图中的亮度对应的滚动条的ID。
【1】右击滚动条,选择添加变量。如下图,一般只需要修改三个地方。类别,名称,访问(一般是private),这里改成:类别:控件,访问:private,名称:m_slider.然后点击完成,这样就添加好了控件类型的变量。

【2】再来添加值类型的变量。同样的,右击同一个滚动条,选择添加变量,此处修改类别:值,访问:private,名称改为m_int。点击完成即可。

用同样的手法给另外一个滚动条添加两个变量。如下图所示。
【1】控件类型变量。控件ID为:IDC_SLIDER2,名称:m_slider2

【2】值类型变量。数值变量名称为m_int2

再来看一下整个界面

第三步,滚动条初始化。
打开类试图,找到下面


在初始化部分BOOL CMFCApplication1Dlg::OnInitDialog()底下,找到下面这个位置,在TODO后面添加如下代码:

// TODO: 在此添加额外的初始化代码//滚动条1//设置滚动条滚动范围m_slider.SetRange(0, 100);//每十个单位画一个刻度m_slider.SetTicFreq(10);//设置初始位置int Start=80;m_slider.SetPos(Start);//滚动条初始位置SetDlgItemInt(IDC_EDIT1, Start);//设置编辑框的初始值//滚动条2//设置滚动条滚动范围m_slider2.SetRange(0, 300);//每十个单位画一个刻度m_slider2.SetTicFreq(10);//设置初始位置int Start2 = 80;m_slider2.SetPos(Start2);SetDlgItemInt(IDC_EDIT2, Start2);//编辑框的初始值

第四步,给滚动条添加事件
右击整个对话框(不是某一个控件),选择类向导,选择消息,找到WM_HSCROLL,双击,之后点击确定。

然后弹出如下界面

这里就是实现滚动条和编辑框联动的地方(改变滚动条,显示相应的值)需要注意的是,滚动条和按钮不一样,按钮可以添加很多的消息,而滚动条只有这么一个,因为它是在整个对话框页面设置的。那该怎么区分不同的滚动条呢?
方法是通过pSlider->GetDlgCtrlID()来和滚动条的ID来比较,区分是对不同的滚动条进行操作。
代码如下:

// TODO: 在此添加消息处理程序代码和/或调用默认值
if (pScrollBar != NULL)
{// 强制转换成CSliderCtrlCSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;// 根据CSlider控件的ID 来判断是哪一个滚动条if (pSlider->GetDlgCtrlID() == IDC_SLIDER1)//对第一个滚动条进行操作{//获取当前位置值,放在变量m_int中m_int = m_slider.GetPos();//内容设置到编辑框中,编辑框的ID是IDC_EDIT1SetDlgItemInt(IDC_EDIT1, m_int);//On_ContrastAndBright(m_int, m_int2);//用来调整图片亮度和对比度的函数//imshow("src1", g_dstImage);// opencv用来显示图片}if (pSlider->GetDlgCtrlID() == IDC_SLIDER2)//对第二个滚动条操作{//获取当前位置值,放在变量m_int2中m_int2 = m_slider2.GetPos();//内容设置到编辑框中,编辑框的ID是IDC_EDIT2SetDlgItemInt(IDC_EDIT2, m_int2);//On_ContrastAndBright(m_int, m_int2);//用来调整图片亮度和对比度的函数//imshow("src1", g_dstImage);// opencv用来显示图片}
}

最终的运行结果


总结:
1.安放控件
2.添加变量:控件类型和值类型。
3.初始化
4.添加事件。注意滚动条消息是对于整个页面的,对不同的滚动条的处理事件都写在这底下,区分的依据是对ID进行识别。

MFC中滚动条slider和编辑框edit的联动相关推荐

  1. 再谈用MFC实现文件拖放到编辑框

    前不久,看了南京海军指挥学院黄向明同学发表的" 用MFC实现文件拖放到编辑框"一文后,对其最后提出的问题很感兴趣,我就查了一下vc的msdn帮助,发现DragAcceptFiles ...

  2. MFC Windows 程序设计[211]之编辑框的输入与显示(附源码)

    MFC Windows 程序设计[211]之编辑框的输入与显示 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class librarie ...

  3. MFC中CListCtrl添加复选框,实现单选

    记录MFC项目中CListCtrl添加复选框,实现单选步骤 添加复选框 绑定控件变量 CListCtrl m_ctrList; OnInitDialog函数中添加 m_ctrList.SetExten ...

  4. mfc将文件内容引入编辑框_南开大学黄津辉教授团队联合加拿大麦克马斯特大学Ravi教授团队发表微型MFC水质传感器实际废水检测适用性的研究...

    南开大学黄津辉教授团队联合加拿大麦克马斯特大学Ravi教授团队有关微型MFC水质传感器实际废水检测适用性的研究日前发表于BioresourceTechnology 微生物燃料电池(MFC)阳极电活性生 ...

  5. Duilib编辑框Edit输入完自动跳到下一个编辑框

    首先xml文件中设置edit的maxchar参数,默认255好像. <edit maxchar="10" /> 然后在notify函数中加入以下代码 if (msg.s ...

  6. 小程序数据框有重影_关于拖动滚动条编辑框数据重影的问题

    你的位置: 问答吧 -> C/C++ -> 问题详情 关于拖动滚动条编辑框数据重影的问题 我用VC++做了一个编辑框,并设置有垂直滚动条.当编辑框中的数据太多时,此时滚动条可用.我在拖动滚 ...

  7. 【转】Win32子窗口控件(按钮、编辑框、静态框、滚动条等)!!

    前言: 子窗口控件是特殊的子窗口,不需要我们注册窗口类,系统已经注册好了,我们只需要在创建时选择相应的窗口类名.常用的子窗口控件有按钮BUTTON.组合框COMBOBOX.编辑框EDIT.列表框LIS ...

  8. 易语言 取无标题的窗口中编辑框句柄

    这是一个无标题的窗口: 如果要向该运行中的程序窗口编辑框中发送消息,就得先取到编辑框的窗口句柄.才能进一步操作. 那要如何才能取到该窗口句柄呢? 解决办法: 一个运行中的程序,虽然没有窗口标题,但是在 ...

  9. matlab字符串固定长度,限制Matlab用户界面编辑框中的字符串长度

    我在Matlab用户界面中插入了一个编辑框,我想限制用户可以键入的字符数.编辑框没有明显的属性(如"最大字符数").我尝试使用回调函数,验证编辑框上的当前字符串大小是否大于设置的限 ...

最新文章

  1. android实现多画面播放,可无缝切换小窗/全屏的android播放器实现
  2. 006_Maven仓库
  3. C语言 第八章 函数、指针与宏
  4. GDB 命令详细解释
  5. php实现access数据库连接,PHP实现Access数据库连接
  6. redux解决了什么问题?
  7. 为什么要用Vue.js的组件化开发
  8. oracle手把手教学资料
  9. 用C#写了一个新增用户就发送邮件和手机短信的SqlServer触发器(附源码)
  10. 面试被问到HashMap 底层原理?看完这边文章绝对不慌!
  11. linux qt 多点触摸,【转】基于Qt, TUIO和TSLIB的嵌入式Linux下的多点触摸设计
  12. 区块链入门教程(1)--概述
  13. 医学系统(一)医院常用的软件系统:PACS系统、HIS系统、RIS系统、LIS系统、CIS系统
  14. 制动计算机,一种基于摩擦制动的计算机主机底座
  15. 【译】 Golang 中的垃圾回收(三):Go Pacing
  16. 重装系统后,一直卡在天涯若比邻蓝屏
  17. 医学统计学笔记之分布
  18. ABAP Enhancement
  19. 计算机科学与技术专业需要配电脑吗,大一新生开学,需要配台“电脑”吗?辅导员:这4个专业必须配...
  20. 论文笔记:Attention U-Net: Learning Where to Look for the Pancreas

热门文章

  1. Redis总结(二)C#中如何使用redis
  2. Android布局琐碎(原)
  3. jQuery总体架构的理解
  4. 5分钟安全顾问 - 针对家庭办公室用户的简单防火墙安装
  5. 深度linux安装spotify,如何在 Linux 上使用 snap 安装 Spotify(声破天)
  6. 神经网络参数迁移与惯性质量
  7. 【Paper】2020_Event-Triggered Time-Varying Formation Control for Discrete-Time Multi-Agent Systems wit
  8. DFTug - Running the Test DRC Debugger
  9. 记录一次CPLD资源过少、时序伪例的解决办法
  10. drawable(hdpi,ldpi,mdpi) 的说明