CMenu的SetMenuItemBitmap等方法实现的效果不太理想,而且好象不能显示256色位图.
哪位高手有其他比较好的方法,能在菜单上显示256色图标,而且有比较好的效果.

解决方案 »

  1.   

    如果不用SetMenuItemBitmap,试一下<windows程序设计>  关于位图 那章里面有给菜单加图标的~
      

  2.   

    重载SetMenuItemBitmap自己画不可以吗?
      

  3.   

    // LGMenu.h: interface for the CLGMenu class.
    //
    //////////////////////////////////////////////////////////////////////#if !defined(AFX_LGMENU_H__017EC1E9_C139_11D7_B575_B65CF7DFC864__INCLUDED_)
    #define AFX_LGMENU_H__017EC1E9_C139_11D7_B575_B65CF7DFC864__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#include <afxtempl.h>
    // struct for toolbar resource; It's already defined in toolbar class  ;)
    struct ToolBarData
    {
    WORD wVersion;
    WORD wWidth;
    WORD wHeight;
    WORD wItemCount;
    };struct MenuItemData
    {
    int iImageIdx;
    int iCmd;
    char cText[128];
    };struct ImageItemData
    {
    int iImageIdx;
    int iCmd;
    };
    class CLGMenu  
    {
    public:
    CLGMenu();
    virtual ~CLGMenu();protected:
    HFONT m_hFont; CSize m_szImage;
    CImageList m_ilList;
    CImageList m_ilOther;    CArray<MenuItemData*,MenuItemData*> m_aMenuData;
        CArray<ImageItemData*,ImageItemData*> m_aImageData;public:
    virtual void DrawDisabledButton( CDC & dc, const CRect & rc ) const;
    virtual bool MeasureItem(LPMEASUREITEMSTRUCT lpm);
    virtual bool DrawItem(LPDRAWITEMSTRUCT lp);
    int FindImageItem(const int cmd);
        MenuItemData * AddMenuItem(const char * txt, const int cmd);
    virtual void RemapMenu(CMenu * pMenu);
    void AddImageItem(const int idx, WORD cmd);
    virtual bool LoadToolBarResource(unsigned int resId, COLORREF clMask = 0xC0C0C0);
    virtual bool AddToolBarResource(unsigned int resId, COLORREF clMask = 0xC0C0C0);
    };#endif // !defined(AFX_LGMENU_H__017EC1E9_C139_11D7_B575_B65CF7DFC864__INCLUDED_)
      

  4.   

    CPP文件内容太长,有兴趣向以下地址发一封E-mail 索取: [email protected]