ポップアップメニューのリスト制御

[戻る]
HIDE 2004/01/20(火) 22:18:08
HIDEといいます。よろしくお願いします。

環境はVC++6.0 MFCを使っています。
質問なのですが、
まず、ダイアログ上に入力不可に設定したエディットを作成しました。
そのエディットは入力不可になっているのですが、
エディット上で右クリックをすると、
"切り取り"、"コピー"、"貼り付け"等のポップアップメニューが表示されます。
このポップアップメニューの"貼り付け"を淡色に設定したいのです。
どのようにすれば良いのでしょうか?

自作でメニューを作成すれば良いのかもしれませんが、"貼り付け"以外の機能は
そのまま使用したので、何か方法があれば御教授ください。

ray [E-Mail] 2004/01/24(土) 08:43:46
他にもっと簡単な方法があるかどうか分かりませんけど、
自作メニューならそんなに難しくないですよ。
機能は既にあるものを使うので、MFCなら、
カットー>ID_EDIT_CUT
コピーー>ID_EDIT_COPY
のようにIDを指定するだけでその機能が自動的に実装されます。
参考(右クリック時など):

    // Show popup menu
    CMenu menu;
    menu.CreatePopupMenu();
    menu.AppendMenu(MF_STRING | MF_ENABLED, 
ID_EDIT_UNDO, "&Undo\tCtrl+Z");
    menu.AppendMenu(MF_SEPARATOR);
    menu.AppendMenu(MF_STRING | MF_ENABLED,ID_EDIT_CUT, "Cu&t\tCtrl+X");
    menu.AppendMenu(MF_STRING | MF_ENABLED,ID_EDIT_COPY, "&Copy\tCtrl+C");
    menu.AppendMenu(MF_STRING | 
MF_ENABLED,ID_EDIT_PASTE, "&Paste\tCtrl+V");
    menu.AppendMenu(MF_STRING | MF_ENABLED,ID_EDIT_CLEAR, "&Delete\tDel");
    menu.AppendMenu(MF_SEPARATOR);
    menu.AppendMenu(MF_STRING | MF_ENABLED,ID_EDIT_SELECT_ALL, "Select 
A&ll\tCtrl+A");

    ClientToScreen(&point);
    menu.TrackPopupMenu(
        TPM_LEFTALIGN |
        TPM_RIGHTBUTTON,
        point.x, point.y,
        this
    );
    menu.DestroyMenu();

HIDE 2004/01/24(土) 17:24:16
rayさん、返答ありがとうございます。

エディット以外(ダイアログ上)では、既に自作のメニューを出しているので、
出来ればデフォルトの(作らなくても出る奴)メニューを
を制御できるとうれしいのですが、方法は無いのかなぁ?
もしお解りになる方がいらっしゃれば、よろしくお願いします。

渋木宏明(ひどり) [HomePage] 2004/01/24(土) 21:27:51
どこかで WM_INITMENUPOPUP を捕まえられれば、そこで加工できるんじゃないでしょう
か。

ですが、OSによってメニューアイテムのインデックス位置やコマンドIDが異なるか
もしれません。

ray [E-Mail] 2004/01/25(日) 09:59:25
メニューなら、CFrameWnd::m_bAutoMenuEnableメンバ変数をFALSEにすれば淡色に
なるみたいですけど…。あまり参考にならないかな?

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