急公司季度考试,桌面右键菜单实现,点击就是不动作,怎么处理

急啊,公司季度考试,桌面右键菜单实现,点击就是不动作,怎么办!
实在不会,这能现学,比着别人的修改的,原文:http://www.cppblog.com/shly/archive/2013/10/07/157894.html
到底哪里出错了,在桌面右键后,然后点击添加的“我是显卡选项” 就是没反应啊!
现在:
#pragma once
#include "resource.h"       // 主符号

#include "CtxMenuExt.h"
#include "shlobj.h"


#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Windows CE 平台(如不提供完全 DCOM 支持的 Windows Mobile 平台)上无法正确支持单线程 COM 对象。定义 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA 可强制 ATL 支持创建单线程 COM 对象实现并允许使用其单线程 COM 对象实现。rgs 文件中的线程模型已被设置为“Free”,原因是该模型是非 DCOM Windows CE 平台支持的唯一线程模型。"
#endif

#define SZ_MENUTEXT TEXT("我是显卡")

extern HINSTANCE         _hInstance;


// CCContextMenuExt

class ATL_NO_VTABLE CCContextMenuExt :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCContextMenuExt, &CLSID_CContextMenuExt>,
public IDispatchImpl<ICContextMenuExt, &IID_ICContextMenuExt, &LIBID_CtxMenuExtLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
    public IShellExtInit,
    public IContextMenu
{
public:
CCContextMenuExt()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_CCONTEXTMENUEXT)


BEGIN_COM_MAP(CCContextMenuExt)
COM_INTERFACE_ENTRY(ICContextMenuExt)
COM_INTERFACE_ENTRY(IDispatch)
    COM_INTERFACE_ENTRY(IShellExtInit)
    COM_INTERFACE_ENTRY(IContextMenu)
END_COM_MAP()



DECLARE_PROTECT_FINAL_CONSTRUCT()

HRESULT FinalConstruct()
{
        m_hBitmap = LoadBitmap(_hInstance, MAKEINTRESOURCE(IDB_MENU));
return S_OK;
}

void FinalRelease()
{
        if (m_hBitmap)
        {
            DeleteObject(m_hBitmap);
        }
}

public:
    enum 
    {
        IDM_CTXMENU = 0,
    };

public:

    HRESULT STDMETHODCALLTYPE Initialize( 
        /* [in] */ LPCITEMIDLIST pidlFolder,
        /* [in] */ IDataObject *pdtobj,
        /* [in] */ HKEY hkeyProgID)
    {
              
        

        FORMATETC fmt = 
        {
            CF_HDROP,
            NULL,
            DVASPECT_CONTENT,
            -1,
            TYMED_HGLOBAL
        };

        STGMEDIUM sm = 
        {
            TYMED_HGLOBAL
        };
     return S_OK;
    }

    STDMETHOD(QueryContextMenu)(THIS_
        HMENU hmenu,
        UINT indexMenu,
        UINT idCmdFirst,
        UINT idCmdLast,
        UINT uFlags)
    {
        MENUITEMINFO mii;

        if (uFlags & CMF_DEFAULTONLY)
        {
            return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0);
        }

        memset((void*)&mii, 0, sizeof(mii));
        mii.cbSize      = sizeof(mii);
        mii.fMask       = MIIM_STRING | MIIM_CHECKMARKS | MIIM_ID | MIIM_STATE;
        mii.cch         = lstrlen(SZ_MENUTEXT);
        mii.dwTypeData  = SZ_MENUTEXT;

        /*
            这里用hbmpChecked而不用hbmpItem的原因