2012-04-16 67 views
3

我已經使用C++和win32編程編寫了一個shell擴展dll上下文菜單程序。開發環境是Visual Studio 2008和2010.在下面的示例代碼中,我試圖爲主菜單添加菜單圖標。主菜單沒有顯示菜單圖標。 (我需要爲所有菜單項添加圖標。)。InsertMenu/AppendMenu - 如何將圖標添加到使用C++和win32的菜單和子菜單中

請更正以下代碼。

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; 
} 
+0

SO不是調試服務。檢查'SetMenuItemBitmaps'的返回值並調用'GetLastError'獲取更多細節,以瞭解它失敗的原因。提示:參數3無效。 – AJG85 2012-04-16 20:47:11

+1

謝謝AJG85。我找到了問題,而不是使用AppendMenu和CreatePopUpMenu。我用CreateMenu和InsertMenu,它工作。 – 2012-04-16 21:05:18

+0

請你張貼一份工作樣本。 – ST3 2014-07-18 08:41:26

回答

0

CreatePopUpMenu也適用。你只需要使用InsertMenu而不是AppendMenu。

相關問題