首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 對話框 DoModal 返回值機制詳解:返回到哪裡?如何根據按鈕執行不同邏輯?

     編輯:程式設計綜合問答

DoModal 執行流程

INT_PTR nRes = tipDlg.DoModal(); // 1. 模態彈出,阻塞當前函數
// 2. 使用者點擊「確定/取消/關閉」→ 對話框銷毀
// 3. DoModal 返回對應的 ID:IDOK / IDCANCEL / 自訂 ID
if (IDCANCEL == nRes) return;    // 4. 根據返回值決定後續邏輯
UpdateData(TRUE);                // 5. 繼續執行:取得控件資料、計算、刷新 UI

關鍵點

  • 返回位置:緊接著呼叫 DoModal() 的下一行程式碼(同步阻塞)。
  • 返回值來源:對話框類別裡呼叫 EndDialog(nResult) 時傳入的參數。預設「確定」→ IDOK,「取消/關閉」→ IDCANCEL。
  • 對話框生命週期:DoModal 返回時,對話框物件已銷毀,但堆疊上的區域變數 tipDlg 仍存在(可繼續存取其 public 成員)。

實戰模式

MyDialog dlg;
if (dlg.DoModal() == IDOK) {
    // 使用者按確定:讀取 dlg.m_strInput 等公有資料
    ProcessData(dlg.m_strInput);
} else {
    // 使用者取消:不做任何事或提示
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved