ダイアログ間のデータのやりとり – プログラミング – Home

ダイアログ間のデータのやりとり
 
通知
すべてクリア

[解決済] ダイアログ間のデータのやりとり


hanabi
 hanabi
(@hanabi)
ゲスト
結合: 22年前
投稿: 39
Topic starter  

いつもお世話になっております。
今回も簡単な質問だと思いますがよろしくお願いいたします。
開発環境は 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();
}

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

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


引用未解決
トピックタグ
をよよ
 をよよ
(@をよよ)
ゲスト
結合: 22年前
投稿: 15
 

以下の★印の行をよくご検討下さい。

// 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
 hanabi
(@hanabi)
ゲスト
結合: 22年前
投稿: 39
Topic starter  

をよよ さんご返答ありがとうございます。
同じように書いたら無事動かすことができました。
ホント簡単な質問で申し訳ありません。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました