在MFC应用程序开发中,经常需要实现一些具有特定输入限制的编辑框和与之关联的滑动条控件。本文将介绍一种名为CSmartEdit的智能编辑控件和一种名为CLinkSlider的滑动条控件,以及如何将它们集成到MFC对话框中。
CSmartEdit 控件最初是基于MSDN的一个示例CTRLTEST中的CParsedEdit控件。它允许开发者指定可以输入编辑框的字符类型。经过改进,CSmartEdit 控件现在支持更多字符类型,包括数字、字符、十六进制数、浮点数(带指数)、下划线和负号。此外,CSmartEdit 控件最大的增强功能是可以与滑动条控件进行关联,实现所谓的“协调更新”。这意味着,当拖动滑动条时,编辑框中显示的数字会相应地发生变化,反之亦然。
CLinkSlider 控件是一个派生的滑动条控件类,它允许开发者将滑动条与编辑框进行关联。通过这种方式,滑动条的值变化可以实时反映到编辑框中,或者编辑框的值变化可以实时反映到滑动条上。这种交互方式为用户提供了直观的操作体验。
使用CSmartEdit 控件非常简单,以下是基本步骤:
使用CLinkSlider 控件也非常简单,以下是基本步骤:
以下是使用智能编辑框和两个链接的滑动条-编辑框(一个整数和一个浮点数)的代码片段:
// 对话框数据在对话框类声明中
AFX_DATA(CTestSlidersDlg)
enum { IDD = IDD_SLIDE_DLG };
CSmartEdit m_Edit1;
CSmartEdit m_Edit2;
CSmartEdit m_Edit3;
CLinkSlider m_Slider1;
CLinkSlider m_Slider2;
// 在对话框的DoDataExchange函数中
CDialog::DoDataExchange(pDX);
// 在对话框的OnInitDialog函数中
CDialog::OnInitDialog();
// 设置第一个滑动条-编辑框 - 整数
m_Edit1.SetSlideLink(this, IDC_SLIDER1);
m_Edit1.SetParams(-100, 100, 10);
m_Edit1.SetValue(0);
// 设置第二个滑动条-编辑框 - 浮点数
m_Edit2.SetSlideLink(this, IDC_SLIDER2);
m_Edit2.SetParams(0.0, 10.0, 10, "%6.3f");
m_Edit2.SetValue(2.0);
// 设置第三个编辑框 - 它没有链接,并且只接受字母
m_Edit3.SetParseType(SES_LETTERS);
要使用位图按钮,需要在对话框中定义一个具有Owner Draw样式的按钮资源,并在对话框中声明一个CBitmapButton类型的变量。在OnInitDialog函数中调用Button.AutoLoad(ButtonId, this)即可。需要注意的是,按钮的文本必须与位图的名称匹配。例如,取消按钮的文本必须是"Cancel",应用按钮的文本必须是"Apply"。按钮文本的字母大小写不敏感。