こんにちは。VC初心者のゴリといいます。
環境はWin2000,VC++6.0,MFC です。
MDIで子ウィンドウに複数のビューを作成しています。
これらのビューをツールバーのアイコンから表示し、
ビューが表示されたら、そのアイコンを非表示。
また、閉じるボタンでビューを閉じたら、
それぞれに対応しているアイコンを表示する。
というようなものを作りたいのですが・・・
初心者なもので、出来るだけ詳しく教えて頂けるとありがたいです。
よろしくお願いします。
あきです。
すいません。
名前を間違えました・・・
CChildFrameにWM_CREATEおよびWM_DESTROYのハンドラを追加することにより、
MDI子ウィンドウを開いた時と閉じた時の処理を記述することができます。
dairygoodsさん、レスありがとうございました。
WM_DESTROYのハンドラ内に
m_wndToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON1, TRUE);
というのを入れてみたのですが、これではエラーが出てしまいました。
申し訳ございませんがアドバイスをお願いします。
なんで肝心のエラー内容を書かないんですか?
確かに、ca18さんのおっしゃる通りですね。
以下にエラー内容を書きます。
子ウィンドウの閉じるボタンを押下したときに
以下のような実行時エラーとなってしまいました。
For information on how your program cause an assertion failure,
see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
閉じるボタンが押されたことは認識してるみたいなのですが、
なぜこのようなエラーが出てしまったのかわかりません。
すいませんが、よろしくお願いします。
同時にエラーとなったソースファイル名と行番号が出ているはずですが?
> (Press Retry to debug the application)
再試行キーを押してデバッグしてみましたか?
おはようございます。
dairygoodsさんレスありがとうございました
デバックしてみたところ、以下の部分でのエラー発生でした。
_AFXCMN_INLINE CToolBarCtrl::CToolBarCtrl()
{ }
_AFXCMN_INLINE BOOL CToolBarCtrl::EnableButton(int nID, BOOL bEnable)
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd,
TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0)); }
すいません。
途中で送ってしまいました・・
_AFXCMN_INLINE CToolBarCtrl::CToolBarCtrl()
{ }
_AFXCMN_INLINE BOOL CToolBarCtrl::EnableButton(int nID, BOOL bEnable)
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd,
TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0)); }
最後の2行でのエラー発生ということでした。
デバックしてもあまり意味がわかりませんでした。
ヒントとなるようなことを教えて頂くとありがたいです。
よろしくお願いします。
CToolBarCtrl変数のm_hWndがもう存在していないということでは。
ということはCChildFrameでなくCMainFrameのWM_DESTROYハンドラに入れたのでは?
nさん お返事ありがとうございます。
CChildFrameのWM_DESTROYハンドラに入っていますが・・・
もしかしてCChildFrameにCToolBarCtrl変数を追加したのですか?
それはCMainFrameのm_wndToolBarと無関係なやつなのでは?
もしかして、CChildFrameからCMainFrameのツールバーを制御しようとしてませんか?
インスタンスはCMainFrameにしかないはずなので
CChildFrameにインスタンスだけを宣言してもだめだと思うのですけれど。
外していたらごめんなさい。
ああっ、ニアミス。
nさん、PATIOさん お返事ありがとうございます。
指摘された通りのことをしようとしていました。
では、この方法では出来ないということですか?
なにか良い方法がありましたら、教えて下さい。
よろしくお願いします。