主對話框彈出模態參數設置對話框,用戶在編輯框輸入值點「確定」,主對話框需獲取該值更新成員變量 depth。
// 主對話框按鈕處理
void CMainDlg::OnBnClickedSetParam() {
CParamDlg dlg;
dlg.m_value = m_depth; // 初始化傳入當前值 (可選)
if (dlg.DoModal() == IDOK) {
m_depth = dlg.m_value; // 讀取用戶輸入
UpdateData(FALSE); // 刷新界面顯示
}
}
// 參數對話框頭文件
class CParamDlg : public CDialogEx {
public:
double m_value; // 編輯框綁定的成員變量 (Control/Value)
// ...
};
DoModal() 返回 IDOK 表示用戶確認,主對話框負責提取結果。在參數對話框類中重寫 PreTranslateMessage:
BOOL CParamDlg::PreTranslateMessage(MSG* pMsg) {
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) {
OnOK(); // 觸發確定按鈕邏輯
return TRUE;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
「子對話框保存數據,父對話框讀取數據」是 MFC 模態對話框數據交互的標準模式,清晰、安全、易維護。