作者don750421 (1+1≠2)
看板C_and_CPP
標題Re: [問題] MFC視窗傳值問題..
時間Thu Apr 5 20:39:59 2012
我使用了推文建議的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:寫一個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