ダイアログ間のデータのやりとり

[戻る]
hanabi 2003/10/05(日) 01:39:50
いつもお世話になっております。
今回も簡単な質問だと思いますがよろしくお願いいたします。
開発環境は windows2000 VC++6.0 SDI です。

手順としましては、
 1.メインウインドウからダイアログAを呼び出す
 2.ダイアログAからダイアログBを呼び出す
という感じです。

処理の内容を簡単に説明しますと、
ダイアログAにはリストボックスとダイアログBを呼び出すボタンがあり、
ダイアログBにはエディットボックスとOKボタンがあります。
ダイアログBのOKボタンを押すとエディットボックスに入力した文字列が、
ダイアログAのリストボックスに入力されるプログラムを作ろうとしているのですが、
どうにも行き詰っています。

以下にソースの一部を載せます。


//ダイアログAのダイアログB呼び出しボタン
void CADlg::OnMake() 
{
    CBDlg dlg;
    if(dlg.DoModal()==IDOK){
           CListBox *m_list;
           m_list=(CListBox *)GetDlgItem(IDC_LIST1);  
       m_list->AddString("?");
    }
}

//ダイアログBのOKボタン
void CBDlg::OnOK() 
{
    CEdit *m_name;             //editBoxのメンバ変数
    m_name=(CEdit *)GetDlgItem(IDC_NAME);  //editBoxの内容を取得
    CDialog::OnOK();
}

こういう感じでやろうとしてみたのですが、
ダイアログ間でのデータのやり取りの仕方がよくわかりません。
「?」と書いているところにエディットボックスの内容を入れればいいと思うのですが・・


何か参考になるようなことがありましたら宜しくお願いいたします。

をよよ 2003/10/05(日) 09:09:05
以下の★印の行をよくご検討下さい。

// CBDlgのデータメンバー
class CBDlg : public CDialog
{
public:
    CString m_str; // ★
    ...
}

//ダイアログBのOKボタン
void CBDlg::OnOK() 
{
    CEdit *m_name;             //editBoxのメンバ変数
    m_name=(CEdit *)GetDlgItem(IDC_NAME);  //editBoxの内容を取得
    m_name->GetWindowText( m_str );        // ★
    CDialog::OnOK();
}

//ダイアログAのダイアログB呼び出しボタン
void CADlg::OnMake() 
{
    CBDlg dlg;
    if(dlg.DoModal()==IDOK){
       CListBox *m_list;
       m_list=(CListBox *)GetDlgItem(IDC_LIST1);  
       m_list->AddString( dlg.m_str );     // ★
    }
}

hanabi 2003/10/05(日) 23:18:51
[[解決]]
をよよ さんご返答ありがとうございます。
同じように書いたら無事動かすことができました。
ホント簡単な質問で申し訳ありません。

ありがとうございました。

古いスレッドには追加発言できません。