有没有人找到将对话框数据保存到数据库中的好方法CMyDialog::OnOK?
void CMyDialog::OnOK()
{
// If I save my data here, I don't know if DoDataExchange()
// found validation errors.
CDialog::OnOK();
// If I save my data here, EndDialog() has already been called
}
Run Code Online (Sandbox Code Playgroud)
寻找有关如何最好地构造它的想法。我知道规范是让调用者根据需要保存数据,但是如果在将数据保存到数据库时遇到错误,我不希望对话框关闭。
如果CDialog::UpdateData()是虚拟的,似乎是一个不错的解决方案,但事实并非如此。
为什么不只是使用UpdateData?
返回值:
如果操作成功,则返回非零值;否则返回0。否则为0。如果
bSaveAndValidate为TRUE,则返回值非零表示数据已成功验证。
所以:
void CMyDialog::OnOK()
{
if(!UpdateData(TRUE))
{
// There was some error with the validation procedure so don't end the dialog.
return; // Suppress closing dialog
}
// OK to save data
if(!SaveDataToDatabase())
{
// Some error
return;
}
// Data validated Ok and was saved to DB OK, so close
EndDialog(IDOK);
}
Run Code Online (Sandbox Code Playgroud)
除非我想念,否则请理解您的问题。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |