看板 C_and_CPP 關於我們 聯絡資訊
我使用了推文建議的DDX方式,但是子視窗IDD_RESULT仍然無法顯示@@ 但是主視窗IDD_CMAIN是有將值傳出去 我的作法是,先將子視窗IDD_RESULT與主視窗IDD_CMAIN連結 class CReSultDlg:public CDialog { public: int num; CReSultDlg(CWnd* pParent):CDialog(IDD_RESULT,pParent){} BOOL OnInitDialog() { CDialog::OnInitDialog(); //呼叫CDialog::OnInitDialog()函數 return TRUE; } void DoDataExchange(CDataExchange *pDX) { DDX_Text(pDX, IDC_NUMSUM, num); } }; 按下按鈕呼叫OnCal() void CMainDlg::OnBnClickedBtnPlay() { CDialMachDlg dlg(this); dlg.DoModal(); OnCal();//呼叫OnCal() } void CMainDlg::OnCal() { ...中間算式跳過 if (sum==100) { CDialMachDlg dlg(this); dlg.num=100; } } 我使用dlg.num這樣沒有辦法將值傳到子視窗嗎? 還是我有那裡寫錯了呢? 麻煩各位指點^^ ※ 引述《don750421 (1+1≠2)》之銘言: : 我建立了一個對話盒的專案,一開始的對話盒為IDD_CMAIN : 而我在同個專案內建了另一個對話盒,名稱為IDD_RESULT : 對話盒內有五個Btn(假設為IDC_BTN1~IDC_BTN5) : 當我按下BTN時,會呼叫某一個函數假設為OnCal() : 而我希望OnCal()運算完後的結果Show在IDD_RESULT上 : 那麼該怎麼做呢? : BTN1~5觸發同一個函數可以使用ON_CONTROL_RANGE : 那我要如何按這五個按鈕都能Show出 IDD_RESULT : 但是因為代入的值不同,所以五個IDD_RESULT的結果也會不同 : 麻煩各位大大指教,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.194.19
bbearh:每一個dlg, 都是local object, 不是同一個, 當然無法傳. 04/05 22:43
don750421:那如果我要在OnCal()函式中傳值,有辦法解決嗎? 04/05 22:45
bbearh:你將 dlg.num=100; 往上搬一行, 如果你DDX 有寫對, dlg 中 04/05 22:48
bbearh:的edit 應會變成100 04/05 22:48
bbearh:從你的code及解釋還不太能猜你想做什麼. 04/05 22:51
don750421:因為我想寫成當我按下OnBnClickedBtnPlay()去呼叫OnCal 04/05 23:00
don750421:並藉由OnCal計算出來的值Show在IDD_RESULT視窗中 04/05 23:00
※ 編輯: don750421 來自: 118.171.194.19 (04/05 23:02)
bbearh:http://www.u-file.net/f-zea7765 04/05 23:12
bbearh:寫一個sample 你試試 04/05 23:13
don750421:感謝b大,照你的Sample是當你按下button時就傳值過去了 04/05 23:21
don750421:但是,我是希望當按下button時,呼叫一個函式計算.. 04/05 23:22
don750421:算完再透過該函式丟值到子視窗... 04/05 23:23
jhchou:那就先呼叫計算的函式 再傳值過去 順序改一下就好了 04/05 23:33