Edit Control 控件属性 添加消息 [大三TJB_708]
来源:互联网 发布:cs反恐精英1.6数据修改 编辑:程序博客网 时间:2024/06/06 00:16
开发环境:Visual Studio 2010
应用程序:MFC Application
笔记主要包含Edit Control控件的常用设置、多个Edit Control控件输入时单独判断当前输入控件的内容是否符合要求、Edit Control控件对应的一些消息宏。
1 Edit Control常用属性设置
MFC中很多控件的常用功能都是可以通过选中相应的控件然后设置其属性的布尔逻辑值来设定控件相应的功能的。对于一个Edit Control控件,如现要此控件输入的内容居中、边框可见、只允许输入数字。则选中需要这些设置的Edit Control控件,点击右键-->properties[属性],然后在属性框中的Align Text项设置为”Center”,Border 项设置为”true”,Number项设置为”true”,其余的可默认为false。经如此设置后就对应以上对此控件的每项设置要求了。具体其它每项的含义也可以设置为true后试试。
在设置每个编辑框的Number项为”true”后,如果再对编辑框输入非数字的内容,则系统不会接收非数字的输入并会自动提示,如下图
另外,用什么消息来响应每当从一个编辑框中跳出来时输入的数据是否合理呢?我思之1 2觉得用“光标离开编辑控件”的消息来检查输入的消息是否合理。到CEdit类中查了查光标离开光标的消息宏为EN_KILLFOCUS,在MFC程序中为某个特性的Edit Control控件添加此消息( 对应的具体事件是光标从此特定的编辑控件内离开 )宏后,当此消息发生时,对应的函数就会被系统自动调用。
为某个特定的编辑控件添加此消息的步骤为:
在对话框中选中此控件-->右键-->Add Event Handler,Message type选为EN_KILLFOCUS,Class list 选继承的那个对话框类,Function handler name就默认,这个函数名[假设名为OnEnKillfocusMoneyInput]是微软取名的规范形式^-^。
那么在OnEnKillfocusMoneyInput 中的内容该如何编写呢?
第一种:闪入我脑海的第一种方法是为每个控件添加变量,然后用UpdateData( TRUE | FALSE )来进行编辑框与变量之间的信息传递。
使用这种方法当OnEnKillfocusMoneyInput函数响应时,UpdateData( TRUE )无法直接将正确的数字传递给变量。所以,迅速将这个办法抛之脑后。
第二种:舍弃每个控件对应的变量,直接用一般方法获取编辑控件内的内容,然后将其转化为对应的整数,然后判断输入数据的合理性,如是不合理再将光标设置回来供重新输入。直到输入合理为止。
2 样例
以下是一个编辑控件的代码:
//-------------------------------------------------//当光标离开当前控件时,判断输入的数是否合理//-------------------------------------------------void CDMarriageMatchDlg::OnEnKillfocusMoneyInput(){ int i_money; CEdit* pEdit; CString CS_money; //获得当前输入主角自身财富值 pEdit = (CEdit*) GetDlgItem( IDC_MONEY_INPUT ); //获取Edit Control 内的内容 pEdit->GetWindowText( CS_money ); //将获取到的CString转换成int i_money = _ttoi( CS_money ); if( i_money < 0 || i_money > 100 ){ ::MessageBox( NULL, _T("请重新输入范围1至100的整数值"), _T("HI"), MB_OK ); CEdit *pEdit = (CEdit*)GetDlgItem( IDC_MONEY_INPUT ); pEdit->SetFocus(); pEdit->SetSel( 0,CS_money.GetLength() ); }}
此函数只有在光标离开ID为的IDC_MONEY_INPUT编辑框内后才会执行。光标离开标志输入结束,于情于理于常规也是这个时候判断输入是否合理。
(1)pEdit = (CEdit*)GetDlgItem( IDC_MONEY_INPUT );表示获取ID为IDC_MONEY_INPUT 控件( Edit Control)的句柄.
(2)然后通过pEdit->GetWindowText(CS_money );来将当前编辑控件内的内容返回到CS_money中。
(3)将CString类型数据转换为int类型数据的语句:i_money = _ttoi( CS_money );,网上还说了其它的版本,都报错来着。
(4)如果数据输入不合理,除了给出提示之外,还需要将光标返回到编辑框内。pEdit->SetFocus()表示将光标设在IDC_MONEY_INPUT编辑控件内;pEdit->SetSel(0,CS_money.GetLength() )表示光标的涵盖范围是从输入最开始到字符串末尾。重新输入时,上一次的整体输入都会被重新涵盖。
对于其它的控件,添加相同的Event Handler,编写类似的函数[可以将抽象为一个新的函数,然后通过参数传进去,利于代码的减少]。
Note Over。
- Edit Control 控件属性 添加消息 [大三TJB_708]
- Edit Control 编辑框控件之EN_KILLFOCUS消息使用 [大三TJB_708]
- Edit Control 控件属性 消息
- Edit Control 控件属性 消息 笔记
- [ MFC ] 对话框动态控件的创建 在Picture Control控件上显示图片 [大三TJB_708]
- [MFC] Combo Box 控件向 Edit Contrl控件传输Combo Box下拉选项的字符串 [大三TJB_708]
- 多控件逻辑控制 [大三TJB_708]
- 为edit control控件添加EN_CHANGE事件
- Edit Control 编辑框控件之EN_KILLFOCUS消息使用 笔记
- EDIT控件如何添加WS_BORDER 属性?
- VC控件 Edit Control
- MFC控件Edit Control
- 控件之---Edit Control
- MFC控件--Edit Control
- [MFC]动态控件实现 程序执行流程 [大三TJB_708]
- [MFC] HWND(获取控件或窗体句柄) [大三TJB_708]
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- hdu 4573 Throw the Stones
- 多变的dialog进度条
- 笔记本屏幕
- oracle数据库、客户端安装以及ps/sql连接和导入表实例
- Pig实战
- Edit Control 控件属性 添加消息 [大三TJB_708]
- 21-定义枚举的构造函数、方法和字段
- 关于 size_t , uintptr_t , intptr_t, int
- WebForm请求模型与MVC请求模型 图
- Linux从用户层到内核层系列 - GNU系列之你所不知道的printf
- idea 使用手册
- git 获取android source
- 表长(lua)
- 字符串逆序(lua实现)