<VS C++.net、MFC、Win2000Pro>
タブシートとコントロールIDについて。
初期表示のしつもんです。よろしくお願いいたします。
タブコントロールの子画面を4つ製作しています。
クラスが4画面それぞれにつけました。
(仮にそれぞれA~D画面、CA~CDクラスとする)
それぞれに同じコントロールを貼り付け、
IDも一緒。
コントロールは、
EditA×26個
EditB×26個
RadioButtonA×26個(AがGroup=true)
RadioButtonB×26個
RadioButtonC×26個
RadioButtonD×26個
です。
Resource.hにも
同じIDですので、#define定義は
画面ごとにはなく、一つです。
そこでやりたいことは、
初期に画面表示する際に親画面から一気に設定したいのです。
今やっている方法は
(EditA等はDDXでのメンバ変数とします)
for(int i = 0; i< 26*4(画面); i++)
{
CA.EditA[i] = あいう;
CB.EditA[i] = えおか;
CC.EditA[i] = えおか;
CA.RadioA[i] = 1;
CB.RadioA[i] = 1;
}
UpdateData(fALSE);
と設定し、それぞれ表示させたいのですが、
うまく表示できません。
チャイルド画面で同じIDを使用していることはいけないことなのでしょうか。
(同一チャイルド画面上では重複していませんが)
それともなにか別の原因なのでしょうか。
よろしくお願いいたします。
申し訳ございません
焦っていたものですからついしてしまいました。
以後気をつけます。
>うまく表示できません。
どう上手くいかない?
このコードはどこにある?
なんとなくしか読んでませんが、
親ウィンドウをUpdateDataすると子ウィンドウのUpdateDataって
自動的に呼ばれるんでしたっけ?
CA.UpdateData(false);
などが必要な気がするのですが、、、
違うかな~。。
>REE さん
文字足らずで申し訳ありません。
メインフォーム(TabControlが貼り付けてある)側の
InitDialog()に記述しておりました。
結果的には
画面上にEditの文字が全く表示されず、
RadioButtonのCheckが全て=0の個所に入って表示される
という状態になっており、困っておりました。
>いろは さん
ご教授いただいた通り、
CA.UpdateData(FALSE);と、チャイルドクラスを
読んだ途端、表示されるようになりました。
有難うございました。
今まで気づきませんでした。
しかし、
CA~CDを.UpdateData(FALSE);しても
更新されるのはタブシート1枚目のみです。
少し考えて見ます。
大変感謝しております。有難うございました!
マルチポストしたほうには報告しなんですか?
>以後気をつけます。
マルチポストしないことだけじゃないだろ。(後処理とか)
こんなことやってたら誰も協力してくれなくなります。