• ベストアンサー

メニューのカスタマイズ

EXCLEやWORDのメニューは、使用頻度の高い順に並び、かつ多いメニューは省略されて表示されます。 VC++で同様のメニューを実装する必要がでてきたのですが、このようなメニューを作成した経験のある方、その時の実装方法を教えていただけないでしょうか? よろしくお願い致します。 OS:Windows XP 開発環境:VS2005 MFC使用 MDIアプリケーション

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・単純にメニューを動的に作成すれば良いです。  そしてメニューが選択された時に使用頻度のカウンタを+1にします。  このカウンタをレジストリ、iniファイルなどの保存。  起動時にレジストリ、iniファイルから使用頻度のカウンタを読み込む。  読み込んだカウンタよりメニューを動的作成するときに追加する、追加しないを決定します。  使用頻度が低くて表示させない場合は『v』のような表示を出しますがこれは  メニューをオーナードローで描画します。そして『v』のような表示が選択されたら  すべてのメニュー項目を動的に追加するようにプログラムすれば良いです。  全体的にはこのようになります。 ・以上。ポイントは『使用頻度カウンタ』と『メニューのオーナードロー』です。

yutyantyan
質問者

お礼

済みません、返信が遅くなりました。 なるほど、オーナードローですか。メニューにイメージを付けたり色を変えるくらいしか使い道がないと思っていましたが、それを利用するということですね。 参考になりました。ありがとうございます。

関連するQ&A

  • 【MFC】Version情報の取得

    MFCでアプリケーションを作成しています。 リソースビュー⇒「Version」⇒「VS_VERSION_INFO」の、 キー「FILEVERSION」の値を取得するにはどのように実装すれば良いのでしょうか? ご存知の方おられましたら、ご教授お願い致します。 開発環境はVC++2005です。

  • MDIでプロジェクトを作成しSDIとして使用する方法

    次の開発環境でWindowsアプリを作成するにあたり、 アプリケーションの種類をSDIとすべきかMDIと すべきか迷っています。  WindowsXP Professional  Visual Studio.NET 2002  VC++ MFC そこで、質問なのですがアプリケーションの種類を MDIとしてプロジェクトを作成した後にSDIと同じ動き となるようにコードを書く(変更する)ことがで きますか。 例えば、プロジェクトを起動させると、常に1つの ドキュメントがメインウィンドウ全体に表示される。 ご存じの方すいませんがよろしくお願いします。

  • メニューを追加した時の実装を書くクラスは?

    環境 WIN98 VC++6.0 MFC にて メニューにコマンドを追加しクラスウィザードにて、コマンドの実装をするときに、CxxxMainFrmクラスとCxxxViewクラスのどちらにも実装出来ます。 どうしてどちらにも実装できるのですか? また、それぞれの使い分けはどうなっているのですか?

  • 【MFC】キャンセルボタン処理が実装できない

    VC++2005(MFC)にて下記サイトを参考にMDIアプリケーションを作成しています。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_MDI1.html 手順として、プロジェクトを新規作成し、MFC AppWizard(exe)で 新規プロジェクト名をMDITest1に設定し、アプリケーションの種類はMDI、 ビュークラスCMDITest1Viewの基本クラスはCFormViewとします。 リソースビューより、自動生成されたフォームの上に、 Buttonを配置し、イベントハンドラOnBnClickedButton1()内にて、 IDCANCEL()処理にて、ボタン押下時のウィンドウを閉じる処理を 実装したいのですが、コンパイルエラーが発生します。 基本クラスがCDialogクラスの場合は実装できるような気がするのですが。。 フォームビューだと、キャンセル処理は実装不可能なのでしょうか? また、不可能だとしたらウィンドウを閉じる処理はどのように実装すればよいのでしょうか? 解決策をご存知の方おられましたら、お手数ですがご教授宜しくお願い致します。

  • MDIで同時起動するドキュメント数の制限方法

    次の開発環境でWindowsアプリを作成するにあたり、 アプリケーションの種類をMDIとします。  WindowsXP Professional  Visual Studio.NET 2002  VC++ MFC そこで、質問なのですがMDIで同時起動する ドキュメント数を制限する方法はありますか。 例えば、ウィンドウ内で開くドキュメント数を 4つまでに制限する。 .NET上での設定なのか、コード上で行うのか。 または、参照するサイトやサンプルプログラム、 書籍、ヒントとなる関数やコードなど、なんでも よろしいのでご存じなことを教えて頂けないで しょうか。

  • MDIでのメニューの変更

     VC++ 6.0 を使っています。 MFCを使った、メール関係のソフトを作っています。  サンプル MFCIE では、普段使っているIEのお気に入りの内容が サンプルを動かしたときに表示されます。  今は、MDIの形でソフトをつくっています。 たとえば、サンプル MDIDOCVW のようになっています。 チャイルドウインドの中で、 CHtmlView を表示させ それが選ばれたときに、 メニューを書き換えて お気に入りの内容を加えて表示させたいのですが 上手くゆきません。  アドバイスをお願いいたします。

  • メニューバークリックのメッセージハンドル

    以前、MFCアプリケーションのコンテキストメニューの非活性方法について質問したのですが、同じような機能をメニューバーにも実装したいと思います。 あるメニューバーのメッセージをハンドルすると可能になると思うのですが、ハンドル方法がわからず困っています。 わかる方はいらっしゃいますでしょうか?

  • Menu 項目のあとにつづく  ...  の意味は?

    VC++ で MFC アプリケーションを作っています。 一般的なソフトを見ると Menu で項目のあとに「 ... 」のあるものとないものがあります。 たとえば IE で ファイル(F) をクリックすると表示されるメニュー:    新規作成(N)    開く(O)... 新規作成には「 ... 」がついていませんが,開くには「 ... 」がついています。 どうでも良い部分かもしれないのですが,気になって仕方ありません!! マヌケな質問であるかもしれませんが,ご教授いただければ幸いです。

  • アップルメニュー

    OSXでは使用頻度の高い書類やアプリケーションのエイリアスを自由に置くことのできるアップルメニューは消えてしまったのでしょうか。

    • ベストアンサー
    • Mac
  • 最近使ったファイル

    VB6SP5で開発してます。 この度、WordやExcel等のアプリケーションで よく見られる、 メニューの[ファイル]-[最近使ったファイル]を 実装したいのですが、やり方が分かりません。 どなたかご存知の方、ご教授ください。

専門家に質問してみよう