作者don750421 (1+1≠2)
看板C_and_CPP
標題Re: [問題] MFC視窗傳值問題..
時間Fri Apr 6 22:59:39 2012
感謝之前幾位前輩的回覆,但是我還是有些地方卡住不太懂@@
拜了Google大神後發現,原來當父視窗開啟子視窗時
會將通道開啟,直到傳送dlg.DoModal才會關閉
所以,要傳給子視窗的值必須在開啟通道的期間送出去才可。
CDialMachDlg dlg(this); <--此時開啟通道
dlg.DoModal();<--關閉通道
如果不在通道開啟的這段期間將值傳到子視窗,那有其他辦法嗎?
因為我是利用某一個Driver寫一個類似通訊的程式..
通訊的概念就是Host1問 Host2傳回資訊
Driver接收訊息是統一由函數OnReceive()處理
Driver傳送訊息則沒有嚴格定義..
假設我目前設定三個傳送訊息OnName(),OnYear(),OnPhone();
父視窗IDD_CMAIN 子視窗IDD_RESULT
我希望當我按下按鈕的同時,將這三個訊息傳送給對方,並且開啟子視窗
void CMainDlg::OnBnClickedBtnAsk()
{
OnName();
OnYear();
OnPhone();
}
但是接收的函式為同一個,我希望接收到訊息後,能將數值顯示在子視窗中
void CMainDlg::OnReceive()
{
if(Tital=="Name")
{
string m_name=Mark;
}else if(Tital=="Year")
{
int m_year=2012;
}else if(Title=="Phone")
{
int m_phone=0912345678;
}
}
請問一下,如果像這種情況,有什麼辦法可以將接收到的值傳到子視窗呢?
麻煩大家指點@@卡關卡兩天了..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.165.215.14
→ jhchou:先不說你對DoModal的奇怪理解 你的問題是希望子視窗開啟後 04/06 23:43
→ jhchou:程式能夠繼續接收driver送來的訊息 並且顯示在子視窗嗎? 04/06 23:43
→ don750421:jh大,是的.. 04/06 23:50
→ jhchou:讓子視窗能接收並處理driver送的訊息 或是用modaless dlg 04/07 00:43
→ jhchou:或是用多執行緒 04/07 00:47
→ don750421:那父視窗要如何傳值呢? 有這方面的Samle可以參考嗎? 04/07 00:51
推 seoker:PostMessage? 04/07 01:54
→ bbearh:用法:1. CreateSub, 2. 再按 CAL2, 再按CAL2. repeat cal2 04/07 23:21
→ bbearh:建議以後可以給UI,及圖解, 不然真的很難猜你想問什麼? 04/07 23:24
→ don750421:了解,謝謝b大的Sample,一目了然..下次我會有圖示說明. 04/08 23:08