MFC DDX 機制要求在讀取控件值前調用 UpdateData(TRUE),將控件內容同步到成員變量。
void CMyDlg::OnBnClickedSave() {
CString str;
m_edit.GetWindowText(str); // ❌ 直接讀控件,繞過 DDX 變量
// 或 未調用 UpdateData(TRUE) 直接使用 m_str 成員
db.Execute("INSERT INTO t(col) VALUES ('" + str + "')");
}
void CMyDlg::OnBnClickedSave() {
UpdateData(TRUE); // ✅ 將控件內容同步到 m_str 成員變量
// 此時 m_str 已包含編輯框最新文本
db.Execute("INSERT INTO t(col) VALUES ('" + m_str + "')");
}
UpdateData(TRUE):控件 → 變量(保存前調用)。UpdateData(FALSE):變量 → 控件(初始化/刷新時調用)。GetWindowText 並自行管理字符串生命周期。