• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MFCで二次元配列のCEditコントロールを作成できません。)

MFCで二次元配列のCEditコントロールを作成できません

このQ&Aのポイント
  • MFCで二次元配列のCEditコントロールを作成しようと思いましたが、うまくできません。
  • 何がうまくいかないのか、教えてください。
  • 詳細な情報がないため、具体的な解決策を提供することはできませんが、おそらくコードのどこかに問題がある可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>では、ないのですか? はい。 newに対するdeleteは呼ばれてますが、 CEdit::Create()に対するDestroyWindowが呼ばれていません。 >new演算子を使用して、 >テキストコントロールを追加した場合、 >テキストの内容が変更されたときに、 >メッセージボックスが表示されるようにするにはどうすればいいですか? OnCommand()のメッセージハンドラを処理する。 もしくは、CEditをそのまま使うのではなく、CEditの派生クラスを定義して使います。で、メッセージハンドラを定義すればできます。

thulala
質問者

お礼

MFCのことをもう少し理解してから改めて質問させていただきます。 ありがとうございました。

thulala
質問者

補足

>>OnCommand()のメッセージハンドラを処理する。 >>もしくは、CEditをそのまま使うのではなく、 >>CEditの派生クラスを定義して使います。 >>で、メッセージハンドラを定義すればできます。 よくわかりませんでした。 すみません。 あちこちHPもまわりましたが、 理解できませんでした。 >>newに対するdeleteは呼ばれてますが、 >>CEdit::Create()に対するDestroyWindowが >>呼ばれていません。 よくわかりました。 ありがとうございます。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>あっていると思います。 って言われてもよくわからないのですが・・・ 補足に書かれたコードで動くようになったってことですか? で、どうすればいいのでしょうか? ちなみにこのソースをぱっと見る限りは、 エディットの破棄が行われていない、ってのが抜けてますね。 あとは static bol=true;ってありますけど、 正しくは static bool bol=true; ってとこですかね?

thulala
質問者

補足

エディットの破棄が行われていない というのは、 for(int i=0;i<10;i++) { delete[] cd[i]; } delete[] cd; bol=true; } では、ないのですか? それと、 new演算子を使用して、 テキストコントロールを追加した場合、 テキストの内容が変更されたときに、 メッセージボックスが表示されるようにするにはどうすればいいですか?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>思いましたがうまくできません。 どのようにうまくいかないんですか? 1つのときは作成できるのですか? 落ちるんですか? 表示されないんですか? Createの戻り値とか調べましたか? #ちなみにこれだと2次元配列じゃないんですけど。 似てるけど違います。CEditの配列を要素に持つ1次元配列なんです。

thulala
質問者

補足

回答ありがとうございました。 すみません、少しぼけていました。 正しくは、 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; } } でした。 あっていると思います。

関連するQ&A