ウインドウ間で文字のやり取りをするには?

[戻る]
のっち 2001/03/08(木) 14:56:16
こんにちは。のっちです。
MFCでダイアログベースを使いプログラムを組んでいます。

ウインドウのボタンを押したら次のウインドウが新しく表示されるのですが、
前のウインドウのエディットボックスに入っている文字を新しいウインドウの
エディットボックスに表示したいのですがどうやればいいのですか?
下のプログラムはボタンを押すと次のウインドウを表示するものです。

void CTourokuDlg::OnButton2() 
{
    CKeisanDlg KeisanDlg;
    KeisanDlg.DoModal();
}
よろしくお願いします。

ららら [E-Mail] 2001/03/08(木) 17:01:09
らららです。

呼び出したダイアログのメンバ変数に
前のウインドウのエディットボックスに入っている文字を
表示できるメンバ変数を用意しておいて
DoModal()する前にセットする。
それで、CKeisanDlgのInitialで、
表示するのでどうでしょう?

のっち 2001/03/08(木) 18:30:34
らららさんお返事ありがとうございます。

void CTourokuDlg::OnButton2() 
{
    CString ss;
    CKeisanDlg KeisanDlg;
    CEdit* myEDa1=(CEdit*)GetDlgItem(IDC_EDIT1);
    m_ed1.GetWindowText(ss);
    myEDa1->SetWindowText(ss);
    KeisanDlg.DoModal();
}
こんな感じにしたんだけど表示されませんでした。
どうしたらいいのか教えてください。

ららら [E-Mail] 2001/03/09(金) 01:01:15
表示するのは、CKeisanDlgのエディットボックスですよね。

    CString ss;
    CKeisanDlg KeisanDlg;
    CEdit* myEDa1=(CEdit*)GetDlgItem(IDC_EDIT1);
    m_ed1.GetWindowText(ss);
//    myEDa1->SetWindowText(ss);
    keisanDlg.m_ss = ss; // メンバに表示する文字列をセットする。
    KeisanDlg.DoModal();

↑のように直して、さらに
KeisanDlgのInitialで、
表示した、エディットボックスに、SetWindowText(m_ss);
です。
※m_ssは、CKeisanDlgに新たに追加した文字列保持用メンバ変数。

2001/03/09(金) 08:14:48
DoModalで文字列を渡せばよいのでは。

のっち 2001/03/09(金) 14:47:06
[[解決]]
重さん、らららさんお返事ありがとうございます。

らららさんと重さんが教えてくださったのを参考にしたら出来ました。

お返事くださった皆さんありがとうございます。

本当にありがとうございます。
これからもよろしくお願いします。

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