gpt4 book ai didi

c++ - 在 OnOK 中保存对话框数据时出现问题

转载 作者:行者123 更新时间:2023-12-02 01:13:24 25 4
gpt4 key购买 nike

有人找到了在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

}

寻找关于如何最好地构建它的想法。我知道规范是让调用者根据需要保存数据,但如果我在将数据保存到数据库时遇到错误,我不希望对话框关闭。

如果CDialog::UpdateData()是虚拟的,这似乎是一个很好的解决方案,但事实并非如此。

最佳答案

为什么不直接使用 UpdateData

返回值:

Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated.

所以:

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);
}

除非我无法理解你的问题。

关于c++ - 在 OnOK 中保存对话框数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com