MDIで動的に作成したサブメニューの関連付けについて

[戻る]
ひろ 2003/12/04(木) 15:27:47
いつも参考にさせていただいております。
ひろともうします。

現在、MDIベースのアプリケーションを作成しています。
MDI子ウィンドウをオープンした時に、メインフレームの
メニューの内容が自動的に切り替わってしまいます。

例えば、MDI子ウィンドウをオープンする前に
メインフレームの右から2番目のサブメニューを動的に
作成したとします。
それをMDI子ウィンドウをオープンした時に
右から3番目のサブメニューにAttach?することはできるのでしょうか?

また、全てのMDI子ウィンドウを閉じた時に
元の位置のメインフレームの右から2番目のサブメニューに
戻すことはできるのでしょうか?

環境は Win2k、VC++6.0 SP5、MFC4.2 です。

よろしくお願い致します。

ひろぴー 2003/12/04(木) 17:05:42
> 例えば、MDI子ウィンドウをオープンする前に
> メインフレームの右から2番目のサブメニューを動的に
> 作成したとします。

コレはCMainFrame::OnInitMenu()で行っていますよね?
アクティブな子フレームが取得できますから、その結果により振り分けたらどうでしょうか?

面倒くさい場合は全部同じメニューにしちまうとか。
↑実際、選択したフレームによりメニューが変わるとユーザに分かり辛いという場合もあります
し(逃げですか?(ToT))

素朴な疑問なんですが、基準が右なのはどうしてですか?

ひろ 2003/12/08(月) 19:34:43
ひろぴー様

返事が遅くなり、大変申し訳ございません。
仕事が火を噴いてしまい、重い軟禁(監禁?)状態だったもので。。。

メニューですが、OnInitMenuPopup()で振り分けできました。
ありがとうございます。

ついでで申し訳ございませんが、
今回、お気に入りのようなものを作ろうと考えています。
指定したあるディレクトリのサブディレクトリを
メニューに追加していきたいのですが、
ディレクトリはいつ追加や移動、削除されるかわからないので
OnInitMenuPopupで表示される直前に毎回チェックをしようと思ったのですが、
面倒くさいので全消滅後、全作成にしてしまったら
メニューが表示されるまで時間がかかりすぎてしまいます。

何かよい方法があったら教えてください。
よろしくお願い致します。

p.s. 左から数えると、6番目と7番目になります(笑)

ひろぴー 2003/12/08(月) 19:47:36
> 面倒くさいので全消滅後、全作成にしてしまったら
> メニューが表示されるまで時間がかかりすぎてしまいます。

ぬぬ、抽出に時間がかかっているなんてことはないですか?
自分も全削除/全追加をやりましたが、全く気にならなかったです。
他PCのアプリとのやり取りをしながら項目を追加していったので、表示までに結構時間がかか
るかな?と思ったのですが、それほどでもありませんでした。20個程度だったからかも。

市販のアプリでも、メニューからフォントを選べるようになっていて、表示までに結構時間がか
かっていたおぼえがあるので、数が多ければしょうがないのかな〜と思っています。

ひろ 2003/12/09(火) 14:27:41
[[解決]]
ひろぴー様

遅いのは指定ディレクトリ内の全検索をするからですかねぇ。。
抽出時間をチェックしてみます。
ちなみにメニュー項目をクリックしてから表示されるまで
5秒くらいかかっています。

Explorerのお気に入りってどう作られているかなぁ?

ありがとうございました。

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