4

C++ と win32 プログラミングを使用して、シェル拡張 dll コンテキスト メニュー プログラムを作成しました。開発環境は Visual Studio 2008 と 2010 です。以下のサンプル コードでは、メイン メニューのみにメニュー アイコンを追加しようとしています。メイン メニューのメニュー アイコンが表示されません。(すべてのメニュー項目にアイコンを追加する必要があります。)

以下のコードを修正してください。

QueryContextMenu(HMENU hmenu, UINT /*uInd*/, UINT idCmdFirst, UINT /*idCmdLast*/, UINT /*uFlags*/ )
{


    int id = 1;

    HBITMAP hBitmap = NULL;

    hBitmap = (HBITMAP)LoadImage((HMODULE)_AtlBaseModule.m_hInst,MAKEINTRESOURCE(IDB_MYBITMAP), IMAGE_BITMAP, 12, 12, 0);


    HMENU submenu = CreatePopupMenu();

    AppendMenu(submenu, MF_STRING|MF_ENABLED, uidCmdFirst + id++, L"XP");
    AppendMenu(submenu, MF_STRING|MF_ENABLED,uidCmdFirst + id++, L"VISTA");
    AppendMenu(submenu, MF_STRING|MF_ENABLED,uidCmdFirst + id++, L"Win 7");

    InsertMenu(hmenu, 4,MF_BYPOSITION|MF_POPUP, UINT(submenu), L"Windows");
    SetMenuItemBitmaps(hmenu,id++, MF_BITMAP, hBitmap,hBitmap);


    return id;
}
4

2 に答える 2

1

CreatePopUpMenu も機能します。AppendMenu の代わりに InsertMenu を使用する必要がありました。

于 2013-04-26T11:28:45.847 に答える