右クリックでボタンを設置する

[戻る]
オレトオマエト… 2007/01/23(火) 12:27:10
質問があります。
CViewの上で右クリックを押したところにボタンを設置しようとしたのですが、1個目の
ボタンは設置できたのですが2個目を設置しようとするとエラーになってしまいます。
原因がわかる方いらっしゃいましたらご教授ください

開発環境はVC++.NET 2003
MFC MDI

CButton m_button;

hIcon=(HICON)LoadIcon(AfxGetInstanceHandle(),(char *)IDI_ICON1);
m_button1.Create(_T"go",WS_CHILD|WS_VISIBLE|BS_ICON,
         CRect(point.x,point.y,point.x+32,point.y+32),this,10000);
m_button.SetIcon(hIcon);

という具合です。

keichan [E-Mail] 2007/01/23(火) 13:10:14
CButton が1個しか用意されてないから?
m_buton をどこで定義しているかわかりませんので、ズバリは言えませんが・・・
ボタンを動的確保するようにすればどうですか?

keichan [E-Mail] 2007/01/23(火) 13:11:03
>m_buton をどこで定義しているかわかりませんので、
誤字orz
m_button をどこで定義しているかわかりませんので、

Blue 2007/01/23(火) 13:18:06
エラーになるとは?ASSERTIONでしょうか?

もしm_の示すとおりm_buttonがメンバ変数であるのであれば、
Createメソッドによって、2個目のボタンを作ろうとすると
すでに1個目で作成済みであるため、起こられるのではないでしょうか?


上限が決まっていないのであれば、CArrayやstd::vectorをつかって
メンバ変数を宣言しておいたほうがよいでしょう。
上限が決まっているのであればCButtonの配列にする。

オレトオマエト… 2007/01/24(水) 03:35:43
返信が遅れてしまいました。すみません。
keichanさん,Blueさん返信ありがとうございます。
blueさんのご指摘のとおりCArrayでボタンを追加していく方法をとらせていただくこと
にしました。
CArray <CButton* ,CButton*> m_button;

CButton *button = new CButton;
としてこれをCArrayに保存していくことで実現できました。
おかげでこの配列とpointをセットで保存して再配置できるように使用と思います。。

keichanさんBlueさんありがとうございました。

オレトオマエト… 2007/01/24(水) 03:36:16
[[解決]]
解決チェック忘れました。

Ban 2007/01/24(水) 08:38:24
# 老婆心ながら、うっかりやりがちなのでdeleteを忘れずに。

古いスレッドには追加発言できません。