作者don750421 (1+1≠2)
看板C_and_CPP
標題Re: [問題] Modeless視窗 如何傳值?
時間Tue Apr 17 22:31:05 2012
我上禮拜測試了一下,使用推文大大的方法
依然無法將值傳過去,我將CParentDlg *mdlg=new CParentDlg();
移到.h內的public宣告也不行,我也特別注意有沒有將#include "stdafx.h"放到最上面
我的做法是在父視窗某個按鈕中Create新視窗
void CMainDlg::OnBnClickedBtnAsk()
{
mdlg->Create();
mdlg->ShowWindow(SW_SHOW);
OnName();
OnYear();
OnPhone();
}
在傳值的部分
void CMainDlg::OnReceive()
{
if(Tital=="Name")
{
string m_name=Mark;
mdlg->m_pname=m_name; //m_pname是子視窗接值得字串名稱
}else if(Tital=="Year")
{
int m_year=2012;
mdlg->m_pyear=m_year; //這種方式會發生錯誤,無法將值傳過去
}else if(Title=="Phone")
{
int m_phone=0912345678;
mdlg->GetDlgItem(IDC_PHNUM)->SetWindowText(mdlg->m_phnum=m_phone);
//這樣就有傳過去了
}
}
但是還是不知道為什麼用mdlg->m_pname=m_name;無法將值傳過去
※ 引述《don750421 (1+1≠2)》之銘言:
: 我新增一個專案(對話盒),假設為CMainDlg,我另外新增了一個對話盒CParentDlg
: 那如果CMainDlg要傳值給CParentDlg該怎麼傳呢?
: 如果子傳父視窗可以用
: ((CMainDlg*)m_parent)->m_ptext=m_mtext;
: 網路上找到的範例幾乎都是子傳給父視窗數值,沒有看到父傳給子
: 所以想請問一下,如果父傳子的話該怎麼寫呢?
: 麻煩各位指教^^
: 因為我是利用某一個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: 118.171.193.18
→ leiyan:每到這時候我就會想:friend靠你了! 04/17 22:42
→ kosno1:在我看來,只有第三個判斷式的內容,會把資料顯示在UI上。 04/18 10:36