C++ MFC 编辑框控件与CString类型的值变量m_second进行DDX绑定。当焦点离开改控件后,程序将m_second的值转为int变量second,如果转换失败,提醒用户“应输入数值”,如果转换成功,检查second的值是否在0到59(两侧能取到)之间
时间: 2023-12-10 14:42:37 浏览: 132
首先,在对话框的.h文件中声明变量m_second和second:
```cpp
class CMyDialog : public CDialogEx
{
// ...
private:
CString m_second;
int second;
// ...
};
```
然后,在对话框的.rc文件中添加一个编辑框控件:
```xml
CONTROL "",IDC_EDIT_SECOND,"EDIT",ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER,15,80,40,14
```
在对话框的.cpp文件中,通过DDX_Control函数和IDC_EDIT_SECOND控件ID将编辑框控件与变量m_second绑定:
```cpp
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
// ...
DDX_Control(pDX, IDC_EDIT_SECOND, m_editSecond);
DDX_Text(pDX, IDC_EDIT_SECOND, m_second);
// ...
}
```
接下来,在控件失去焦点的消息响应函数里,将m_second的值转为int变量second,并检查其值是否在0到59之间:
```cpp
void CMyDialog::OnEnKillfocusEditSecond()
{
UpdateData(TRUE);
CString strTemp;
int nTemp = 0;
if (!m_second.IsEmpty())
{
nTemp = _ttoi(m_second);
if (nTemp < 0 || nTemp > 59)
{
strTemp.Format(_T("输入有误,应输入0到59之间的数字!"));
MessageBox(strTemp);
nTemp = 0;
}
}
second = nTemp;
UpdateData(FALSE);
}
```
其中,_ttoi函数用于将CString类型的值转为int类型的值。如果转换失败,返回0。如果转换成功,检查其值是否在0到59之间,若不在,则弹出提示框提醒用户重新输入。
最后,记得在OnInitDialog函数中初始化m_second和second变量:
```cpp
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// ...
m_second = _T("0");
second = _ttoi(m_second);
UpdateData(FALSE);
// ...
}
```
阅读全文