閉じるボタンでアイコン表示 – プログラミング – Home

閉じるボタンでアイコン表示
 
通知
すべてクリア

閉じるボタンでアイコン表示

固定ページ 1 / 2

あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

こんにちは。VC初心者のゴリといいます。
環境はWin2000,VC++6.0,MFC です。

MDIで子ウィンドウに複数のビューを作成しています。
これらのビューをツールバーのアイコンから表示し、
ビューが表示されたら、そのアイコンを非表示。

また、閉じるボタンでビューを閉じたら、
それぞれに対応しているアイコンを表示する。

というようなものを作りたいのですが・・・

初心者なもので、出来るだけ詳しく教えて頂けるとありがたいです。
よろしくお願いします。


引用解決済
トピックタグ
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

あきです。
すいません。

名前を間違えました・・・


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

CChildFrameにWM_CREATEおよびWM_DESTROYのハンドラを追加することにより、
MDI子ウィンドウを開いた時と閉じた時の処理を記述することができます。


返信引用
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

dairygoodsさん、レスありがとうございました。

WM_DESTROYのハンドラ内に

m_wndToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON1, TRUE);

というのを入れてみたのですが、これではエラーが出てしまいました。
申し訳ございませんがアドバイスをお願いします。


返信引用
ca18
 ca18
(@ca18)
ゲスト
結合: 22年前
投稿: 1
 

なんで肝心のエラー内容を書かないんですか?


返信引用
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

確かに、ca18さんのおっしゃる通りですね。

以下にエラー内容を書きます。

子ウィンドウの閉じるボタンを押下したときに
以下のような実行時エラーとなってしまいました。

For information on how your program cause an assertion failure,
see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

閉じるボタンが押されたことは認識してるみたいなのですが、
なぜこのようなエラーが出てしまったのかわかりません。

すいませんが、よろしくお願いします。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

同時にエラーとなったソースファイル名と行番号が出ているはずですが?

> (Press Retry to debug the application)

再試行キーを押してデバッグしてみましたか?


返信引用
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

おはようございます。
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)); }


返信引用
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

すいません。
途中で送ってしまいました・・

_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行でのエラー発生ということでした。

デバックしてもあまり意味がわかりませんでした。
ヒントとなるようなことを教えて頂くとありがたいです。
よろしくお願いします。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

CToolBarCtrl変数のm_hWndがもう存在していないということでは。

ということはCChildFrameでなくCMainFrameのWM_DESTROYハンドラに入れたのでは?


返信引用
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

nさん お返事ありがとうございます。

CChildFrameのWM_DESTROYハンドラに入っていますが・・・


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

もしかしてCChildFrameにCToolBarCtrl変数を追加したのですか?
それはCMainFrameのm_wndToolBarと無関係なやつなのでは?


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

もしかして、CChildFrameからCMainFrameのツールバーを制御しようとしてませんか?
インスタンスはCMainFrameにしかないはずなので
CChildFrameにインスタンスだけを宣言してもだめだと思うのですけれど。

外していたらごめんなさい。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

ああっ、ニアミス。


返信引用
あき
 あき
(@あき)
ゲスト
結合: 25年前
投稿: 47
Topic starter  

nさん、PATIOさん お返事ありがとうございます。

指摘された通りのことをしようとしていました。
では、この方法では出来ないということですか?

なにか良い方法がありましたら、教えて下さい。
よろしくお願いします。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました