void InsertInfoDialog::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_ID, m_nID); DDX_Text(pDX, IDC_Name, m_strName); DDX_Text(pDX, IDC_Price, m_dPrice); DDX_Text(pDX, IDC_Count, m_nCount); } 为什么当我用DDX_Text绑定时,会出现弹窗,“请输入一个整数”。该怎么解决 其中m_nID,m_strName,是CString类型,m_dPrice是double类型,m_nCount是int类型 要求可以输入CString类型,而不弹窗
时间: 2023-06-15 16:04:01 浏览: 109
出现弹窗“请输入一个整数”的原因是因为在绑定时,将int类型的变量m_nCount绑定到了IDC_Count控件上,而IDC_Count控件默认是一个整数编辑框,所以输入非整数时会弹出提示框。
要解决这个问题,可以将m_nCount的绑定方式改成DDX_Control,并在代码中手动获取编辑框中的字符串,然后使用CString的转换函数将其转换为int类型。修改后的代码如下:
```
void InsertInfoDialog::DoDataExchange(CDataExchange* pDX) {
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ID, m_nID);
DDX_Text(pDX, IDC_Name, m_strName);
DDX_Text(pDX, IDC_Price, m_dPrice);
DDX_Control(pDX, IDC_Count, m_editCount);
}
BOOL InsertInfoDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_editCount.SetWindowTextW(_T("0"));
return TRUE;
}
void InsertInfoDialog::OnOK()
{
CString strCount;
m_editCount.GetWindowTextW(strCount);
m_nCount = _ttoi(strCount);
CDialogEx::OnOK();
}
```
在OnInitDialog函数中,将IDC_Count控件的初始值设置为0。在OnOK函数中,使用GetWindowTextW函数获取IDC_Count控件中的字符串,然后使用_ttoi函数将其转换为int类型,并将其赋值给m_nCount变量。这样就可以避免弹出“请输入一个整数”的提示框了。
阅读全文