はじめまして、osukeといいます。
MFCでSDIのアプリケーションを作成しています。
開発環境はVisualC++7.0/Windows2000です。
ツリーアイテムの状態(開いている or 閉じている)によってメニューを[開く] or [閉じ
る]に変更したいのですが、どなたかアドバイスをいただけないでしょうか。
具体的に説明すると、
閉じた状態のツリーアイテムを選択した時に[メニュー(M)]を開くと[開く(O)]というメ
ニューが表示され、展開した状態のツリーアイテムを選択した時に[メニュー(M)]を開く
と[開く(O)]というメニューだったところが[閉じる(C)]に変わっているようにしたいのです。
ツリーアイテムの状態取得の方法はわかるのですが、メニューを切り換える方法がわかり
ません。
よろしくお願いします。
クラスウィザードでメニューIDを選び、UPDATE_COMMAND_UIを処理する関数を追加。
関数内で、pCmdUI->SetText(new text);
でできました。
たいちうさん、レスありがとうございます。
VC++7.0にてメニューIDにメッセージ(UPDATE_COMMAND_UI)を処理する関数を追加しようと
思ったのですが、リソースビューでメニューIDを選択してもメッセージを選択できません。
何か他の方法があるのでしょうか?
7.0は使ったことがないのですが、リソースビューではなくクラスウィザードです。
6.0では、クラスウィザードのメッセージマップで、クラス名にCMainFrameを、
オブジェクトIDで操作対象のメニューIDを選ぶと、
メッセージにCOMMANDとUPDATE_COMMAND_UIが選べます。
osukeさんの勘違いでなく、上に類似した方法でもできないなら、
他の回答者の方を待ってください。
私の勘違いでした。
UPDATE_COMMAND_UIを処理する関数を追加できました。
void CMainFrame::OnUpdateTestOpen(CCmdUI *pCmdUI)
{
pCmdUI->SetText(折りたたむ(&O));
}
この関数を呼び出すタイミングと呼び出すときの引数はどうすればいいのでしょうか?
引数は
CCmdUI *pCmdUI;と宣言して
OnUpdateTestOpen(pCmdUI);として呼べばコンパイルは通るのですが、実行すると以下の
ようなエラーになってしまいます。
Rus-Time Check Failure #3 - The variable pCmdUI' is being used without being define.
基本的なことが間違っているのかもしれませんが、アドバイスをよろしくお願いします。
必要なタイミングでOS(?)が呼び出してくれます。
TRACEでも入れて確認してみてください。