- ベストアンサー
MFCで二次元配列のCEditコントロールを作成できません
- MFCで二次元配列のCEditコントロールを作成しようと思いましたが、うまくできません。
- 何がうまくいかないのか、教えてください。
- 詳細な情報がないため、具体的な解決策を提供することはできませんが、おそらくコードのどこかに問題がある可能性があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>では、ないのですか? はい。 newに対するdeleteは呼ばれてますが、 CEdit::Create()に対するDestroyWindowが呼ばれていません。 >new演算子を使用して、 >テキストコントロールを追加した場合、 >テキストの内容が変更されたときに、 >メッセージボックスが表示されるようにするにはどうすればいいですか? OnCommand()のメッセージハンドラを処理する。 もしくは、CEditをそのまま使うのではなく、CEditの派生クラスを定義して使います。で、メッセージハンドラを定義すればできます。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>あっていると思います。 って言われてもよくわからないのですが・・・ 補足に書かれたコードで動くようになったってことですか? で、どうすればいいのでしょうか? ちなみにこのソースをぱっと見る限りは、 エディットの破棄が行われていない、ってのが抜けてますね。 あとは static bol=true;ってありますけど、 正しくは static bool bol=true; ってとこですかね?
補足
エディットの破棄が行われていない というのは、 for(int i=0;i<10;i++) { delete[] cd[i]; } delete[] cd; bol=true; } では、ないのですか? それと、 new演算子を使用して、 テキストコントロールを追加した場合、 テキストの内容が変更されたときに、 メッセージボックスが表示されるようにするにはどうすればいいですか?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>思いましたがうまくできません。 どのようにうまくいかないんですか? 1つのときは作成できるのですか? 落ちるんですか? 表示されないんですか? Createの戻り値とか調べましたか? #ちなみにこれだと2次元配列じゃないんですけど。 似てるけど違います。CEditの配列を要素に持つ1次元配列なんです。
補足
回答ありがとうございました。 すみません、少しぼけていました。 正しくは、 CEdit **cd; void CProject2View::OnBnClickedButton1() { static bol=true; char str[100][12]; if(bol) { cd=new CEdit*[10]; for(int i=0;i<10;i++) { cd[i]=new CEdit[10]; for(int j=0;j<10;j++) { cd[i][j].Create(WS_CHILD|WS_VISIBLE|ES_LEFT,CRect(i*45,j*30,i*45+40,j*30+25),this,10*i+j); } } ransu(str); for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { cd[i][j].SetWindowText(str[i*10+j]); } } bol=false; } else { for(int i=0;i<10;i++) { delete[] cd[i]; } delete[] cd; bol=true; } } でした。 あっていると思います。
お礼
MFCのことをもう少し理解してから改めて質問させていただきます。 ありがとうございました。
補足
>>OnCommand()のメッセージハンドラを処理する。 >>もしくは、CEditをそのまま使うのではなく、 >>CEditの派生クラスを定義して使います。 >>で、メッセージハンドラを定義すればできます。 よくわかりませんでした。 すみません。 あちこちHPもまわりましたが、 理解できませんでした。 >>newに対するdeleteは呼ばれてますが、 >>CEdit::Create()に対するDestroyWindowが >>呼ばれていません。 よくわかりました。 ありがとうございます。