話がかみ合わないようなので
もういっそのこと、グローバル変数にしてみては?
最終的にはコンボボックスの選択からカメラの動作までやりたいとしても、
小さなステップで確実に進みましょう。
このスレッドで質問していることは、
『親ウィンドで子ウィンドで取得した値は使用したい』でしょ?
επιστημηさんが簡潔なサンプルを作ってくれているので、
まずそれを実行してみたらどうですか?
そうすれば、その仕組みを自分のプログラムで使うにはどうすればよいか
考えられると思います。
その上でもし判らない点があれば、その点を改めて質問すればよいでしょう。
# 見よう見まねで飛行機を作りましたが飛びません、
# どこを直したら良いですか?
# ↓
# επιστημη氏>つ 紙飛行機
# PATIO氏、maru氏> 航空力学を勉強しる
> # επιστημη氏>つ 紙飛行機
> # PATIO氏、maru氏> 航空力学を勉強しる
いや、だから、私も拙いながら紙飛行機を作って見せたんですがね。
どうも折り方が悪かったようななので、紙の折り方から勉強したら?
って言ってるつもりなんですけど。
# 飛行機を作ろうとしている人に紙の折り方は必要ないか。
maruさんの方法:
if (dlg.DoModal() == IDOK)
{
int b =dlg.GetB();
int c =dlg.GetC();
int d =dlg.GetD();
int e =dlg.GetE();
UpdateData(TRUE);
}
で親ウィンドで値を取得できました。
しかし、子ウィンドを開くスコープと取得した値を使用するスコープが違う場合は
どうしたらよいのでしょうか?
子ウィンドを開く→void CParentDlg::OnCbnSelchangeComboBox1();内
取得した値を使用→void CParentDlg::OnBnClickedRecord();内
自己レスですいません。
グローバルにすればいいだけでした。
今回、皆様には大変ご迷惑をおかけしました。
申し訳ありませんでした。
質問ばっかりしてしまいましたが、これからしっかり勉強していきたいと思います。
いろいろとありがとうございました。
> しかし、子ウィンドを開くスコープと取得した値を使用するスコープが違う場合は
> どうしたらよいのでしょうか?
その質問は、モーダルダイアログから値を取得することとまったく関係ないということは
わかりますか?
その答えは、
PSB 2008/04/17(木) 23:26:59
と 2008/04/18(金) 01:40:59
のご両名が書いてくださっています。
これらは実践しましたか?
「よくわからない用語があるから読み飛ばした」のでは、いつまでたってもプログラムな
ど作れるようになりませんよ。
内容がわからないのであれば、別の話題ですから別途質問するか(その場合は、新しいス
レに、このスレのURLを書いておきましょう)、または
maru 2008/04/17(木) 23:27:20
のアドバイスに従うのがよろしいでしょう。
# 時刻を含めたコピペのため敬称略
> # επιστημη氏>つ 紙飛行機
> # PATIO氏、maru氏> 航空力学を勉強しる
紙飛行機の中身を知るために必要な内容(C++言語)を勉強しては
と言う話が、航空力学まで行っちゃうと言うのはどうかなぁ。
C++言語に関しては、maruさんが書かれているように紙飛行機の
折り方の話だと思うけれど。
とにかく動くものを作りたいと言うのもわかるんだけど
提示された物のコピペでは応用が利かないし、
間違った覚え方をしてしまうかもしれない。
まあ、それでも作れればいいんだと言う話なら
私もそれ以上は言いませんけれど。
ある程度の基礎知識が付けば、習うより慣れろでも良いと
思うんですけれど、基礎知識が怪しい段階でひたすら
作ろうとするのは勉強方法としては効率が悪いし、
途中で面白くなくなるんではないかなと思います。
グローバル変数にするには楽なんですけれど、
C++言語的に考えるとあまり良い実装とはいえ無いので
その辺も含めてC++言語の勉強をした方がいいです。
その方が自分で解決できる可能性も高くなりますし。
掲示板は色々教えてもらえて便利ですけれど、
自分で解決できた方がスピード的には数段早いので
自分で解決できるようになる為にも基礎的な部分の
勉強をされることをお勧めします。
まあ、今後どのようにされるのかはその人次第なのですけれど。
あうあう、誤字
誤)
グローバル変数にするには楽なんですけれど、
正)
グローバル変数にするのは楽なんですけれど、
> グローバルにすればいいだけでした。
グローバル変数は万策尽きたときの最後の手段。
「わからない」からグローバル は下策。
1> 子ウィンドを開く→void CParentDlg::OnCbnSelchangeComboBox1();内
2> 取得した値を使用→void CParentDlg::OnBnClickedRecord();内
メンバ変数を用意し、[1]で書いて[2]で読むだけのこと。
例えの出来が悪かったようですね。
間抜けな話ですが一応書いておくと私の意図は、、、
・自分のプログラムをどう直すかにとらわれ、
単純なサンプルをわざわざ作成・実行することは重要でないと考え、
原理の理解が不十分なまま闇雲にプログラム修正をしがちである。
・他の方々も勧めているように、基本から勉強したほうが上達が早い。
です。少なくとも後者については伝えることに失敗していますね。
前者についても質問者に伝わったかどうか。
揶揄されたように感じたのかもしれません。
誰も気分を害していなければ良いのですが。
特に気分を害するとかは無いですよ。
ただ、あの例えだと多分たいちうさんの言いたい事は伝わって無いと思います。
航空力学だとちょっと高度過ぎかなと感じたので。
「紙飛行機の折り方を勉強しなさい」ならわかりやすかったかなと。
> グローバルにすればいいだけでした。
επιστημηさんが書いた通り、メンバー変数を用意すればいいだけの話。
επιστημηさんの書いたコードや私の書いたコードを理解すれば自然とメンバー変数と
いう結論になるはず。この辺からもちゃんと勉強してよ、という気持ちになる。
# そこまで期待するのは無理か。
たいちうさん
> 誰も気分を害していなければ良いのですが。
いえ、私は全く。
逆に、たいちうさんのコメントに逆らうような事を書いたので、たいちうさんの方が
気分を害しているんじゃないかと心配しています。
あの例えは、どちらかというとうまいことを言うなぁ、と感心しています。
ただ、PATIOさんが書いたとおり、航空力学というほど高度な事を要求したつも
りはないぞ、とは思いましたけど。
# だからといって、我ながら「紙の折り方」が適切とも思えないのが難点。