クラス別の変数間のアクセスについてよくわかりません。
【CADlg.cpp】
void CADlg::OnOK()
{
CB bdlg;
CString str;
m_ed.GetwindowText(str);
Astr=&str;
cdlg.DoModal();
CDialog::OnOK();
}
【CADlg.h】
public:
CString *Astr;
【CB.cpp】
void CB::OnOK()
{
CStr
CADlg dlg;
dlg.Astr=&bstr;;
MessageBox(bstr);
CDialog::OnOK();
}
【CB.h】
CString bstr;
中身見てもちゃんと移ってないようです。
どうすればちゃんとできますでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>メインはAでBは追加されたクラスダイアログになります。
>Bのエデットボックスに書かれた文字をAに持ってきてその内容を
>表示するというのはできるんですが、Aの内容をBに送りだすってのが
>できないんです。
CB::OnInitDialog()で
SetDlgItemText(ID, bstr)
すれば良いのではないでしょうか?
(IDは表示したいコントロールのIDです)
実は、これはもっと簡単に実装できます。
一旦CB::bstrを削除してください。
ウィザードによって追加する
(ウィザードの操作方法はVSのバージョンで異なるので省略します。ヘルプやネットで検索してください)
と、bstrとコントロールを結びつけてくれます
あとは、呼び出し側でDoModal()の前にbstrへ代入するだけです
No.1
- 回答日時:
CBからCADlgのテキストボックスの値を取得したいのでしょうか?
void CADlg::OnOK()
{
// 不要
// CB bdlg;
// CString str;
if ( Astr != NULL ) {
m_ed.GetWindowText(*Astr);
}
// Astr=&str;
// cdlg.DoModal();
CDialog::OnOK();
}
void CB::OnOK()
{
CADlg dlg;
dlg.Astr = &bstr;
if ( IDOK == dlg.DoModal() ) {
MessageBox(bstr);
}
CDialog::OnOK();
}
といった具合でしょう
# メンバー変数のポインタはコンストラクタ(またはWM_INITDIALOGのハンドラ)でNULLに初期化しておきましょう
この回答への補足
すいません。内容書き忘れてました。。
メインはAでBは追加されたクラスダイアログになります。
Bのエデットボックスに書かれた文字をAに持ってきてその内容を
表示するというのはできるんですが、Aの内容をBに送りだすってのが
できないんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【gcc・cygwin】multiple defin...
-
静的でないメンバ関数の呼び出...
-
【VC++6.0】イベントハンドラ関...
-
既定のコンストラクタがありま...
-
戻り値を返す関数の前に(void)...
-
PICのプログラミングについて
-
int main()、void main()、void...
-
C++にてtemplateで受け取った任...
-
C++でオーバーロードに関するバ...
-
const_castのつかいどころを教...
-
Objective-Cで、スレッドを作成...
-
C# Controls.Addで動的に配置し...
-
多重定義が起きている?--lnk20...
-
VC++でGetKeyboardStateがうま...
-
pictureboxの画像を削除するには?
-
質問が多いです・・・・
-
LCDモニターの駆動
-
LNK2019:未解決の外部シンボル ...
-
カノニカルモードの設定について
-
関数ポインタについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【gcc・cygwin】multiple defin...
-
C++にてtemplateで受け取った任...
-
戻り値を返す関数の前に(void)...
-
静的でないメンバ関数の呼び出...
-
多重定義が起きている?--lnk20...
-
既定のコンストラクタがありま...
-
C# Controls.Addで動的に配置し...
-
int main()、void main()、void...
-
void*型の配列について
-
(void)0 はどんな意味ですか
-
gcc: incompatible pointer type
-
C# KeyDownイベントでショート...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
Notepad++の関数リスト表示の変...
-
コールバックって・・・
-
マルチメディアタイマーの使用方法
-
_beginthreadにて発生するコン...
-
C#でラジオボタンを設定に記録...
-
VC++でGetKeyboardStateがうま...
-
typedef unsigned int UINT;が...
おすすめ情報