程序最小化到托盘区后,我的图形菜单的图标不见了!!!请大家帮帮忙,好吗?

netvc 2001-12-02 09:59:49
在未最小化到托盘区时,右击的图形菜单还好好的,当最小化到托盘时,右击的图形菜单的图标就不见了??我用的时BCMenu类,不知大家有没有用过这个类,下面是该类的定义: //*****************************************************************
// BCMenu.h : header file
// Version : 2.61
// Date : November 20, 1999
// Author : Brent Corkum
// Email : corkum@rocscience.com
// Latest Version : http://www.rocscience.com/~corkum/BCMenu.html
//
// Bug Fixes and portions of code supplied by:
//
// Ben Ashley,Girish Bharadwaj,Jean-Edouard Lachand-Robert,
// Robert Edward Caldecott,Kenny Goers,Leonardo Zide,
// Stefan Kuhr,Reiner Jung,Martin Vladic,Kim Yoo Chul,
// Oz Solomonovich
//
// You are free to use/modify this code but leave this header intact.
// This class is public domain so you are free to use it any of
// your applications (Freeware,Shareware,Commercial). All I ask is
// that you let me know so that if you have a real winner I can
// brag to my buddies that some of my code is in your app. I also
// wouldn't mind if you sent me a copy of your application since I
// like to play with new stuff.
//*************************************************************************

#ifndef BCMenu_H
#define BCMenu_H

#include <afxtempl.h>

// BCMenuData class. Fill this class structure to define a single menu item:

class BCMenuData
{
wchar_t *m_szMenuText;
public:
BCMenuData () {menuIconNormal=-1;xoffset=-1;bitmap=NULL;pContext=NULL;
nFlags=0;nID=0;syncflag=0;m_szMenuText=NULL;};
void SetAnsiString(LPCSTR szAnsiString);
void SetWideString(const wchar_t *szWideString);
const wchar_t *GetWideString(void) {return m_szMenuText;};
~BCMenuData ();
CString GetString(void);//returns the menu text in ANSI or UNICODE
int xoffset;
int menuIconNormal;
UINT nFlags,nID,syncflag;
CImageList *bitmap;
void *pContext; // used to attach user data
};

//struct CMenuItemInfo : public MENUITEMINFO {
struct CMenuItemInfo : public
//MENUITEMINFO
#ifndef UNICODE //SK: this fixes warning C4097: typedef-name 'MENUITEMINFO' used as synonym for class-name 'tagMENUITEMINFOA'
tagMENUITEMINFOA
#else
tagMENUITEMINFOW
#endif
{
CMenuItemInfo()
{ memset(this, 0, sizeof(MENUITEMINFO));
cbSize = sizeof(MENUITEMINFO);
}
};




typedef enum {Normal,TextOnly} HIGHLIGHTSTYLE;

#ifndef UNICODE
#define AppendMenu AppendMenuA
#define InsertMenu InsertMenuA
#define InsertODMenu InsertODMenuA
#define AppendODMenu AppendODMenuA
#define AppendODPopupMenu AppendODPopupMenuA
#define ModifyODMenu ModifyODMenuA
#else
#define AppendMenu AppendMenuW
#define InsertMenu InsertMenuW
#define InsertODMenu InsertODMenuW
#define AppendODMenu AppendODMenuW
#define ModifyODMenu ModifyODMenuW
#define AppendODPopupMenu AppendODPopupMenuW
#endif


class BCMenu : public CMenu // Derived from CMenu
{
// Construction
public:
BCMenu();

// Attributes
protected:
CTypedPtrArray<CPtrArray, BCMenuData*> m_MenuList; // Stores list of menu items

// When loading an owner-drawn menu using a Resource, BCMenu must keep track of
// the popup menu's that it creates. Warning, this list *MUST* be destroyed
// last item first :)
CTypedPtrArray<CPtrArray, HMENU> m_SubMenus; // Stores list of sub-menus

// Stores a list of all BCMenu's ever created
static CTypedPtrArray<CPtrArray, HMENU> m_AllSubMenus;

// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCustomMenu)
//}}AFX_VIRTUAL
// Implementation
public:
static BOOL IsNewShell(void);
void SetBitmapBackground(COLORREF color);
void SetDisableOldStyle(void);
void UnSetDisableOldStyle(void);
BOOL GetDisableOldStyle(void);
void UnSetBitmapBackground(void);
BOOL AddBitmapToImageList(CImageList *list,UINT nResourceID);
BOOL LoadFromToolBar(UINT nID,UINT nToolBar,int& xoffset);
void InsertSpaces(void);
static LRESULT FindKeyboardShortcut(UINT nChar,UINT nFlags,CMenu *pMenu);
static void UpdateMenu(CMenu *pmenu);
static BOOL IsMenu(CMenu *submenu);
static BOOL IsMenu(HMENU submenu);
void DrawCheckMark(CDC *pDC,int x,int y,COLORREF color);
void DrawRadioDot(CDC *pDC,int x,int y,COLORREF color);
BCMenuData *BCMenu::FindMenuItem(UINT nID);
BCMenu *FindMenuOption(int nId,int& nLoc);
BCMenuData *FindMenuOption(wchar_t *lpstrText);
BOOL GetMenuText(UINT id,CString &string,UINT nFlags = MF_BYPOSITION );
CImageList *checkmaps;
BOOL checkmapsshare;
int m_selectcheck;
int m_unselectcheck;
BOOL m_bDynIcons;

void LoadCheckmarkBitmap(int unselect,int select);
void DitherBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth,
int nHeight, HBITMAP hbm, int nXSrc, int nYSrc);
void DitherBlt2(CDC *drawdc, int nXDest, int nYDest, int nWidth,
int nHeight, CBitmap &bmp, int nXSrc, int nYSrc);
static HBITMAP LoadSysColorBitmap(int nResourceId);
BOOL GetBitmapFromImageList(CDC* pDC,CImageList *imglist,int nIndex,CBitmap &bmp);
BOOL ImageListDuplicate(CImageList *il,int xoffset,CImageList *newlist);

virtual ~BCMenu(); // Virtual Destructor
// Drawing:
virtual void DrawItem( LPDRAWITEMSTRUCT); // Draw an item
virtual void MeasureItem( LPMEASUREITEMSTRUCT ); // Measure an item

// Customizing:

void SetIconSize (int, int); // Set icon size

BOOL AppendODMenuA(LPCSTR lpstrText,
UINT nFlags = MF_OWNERDRAW,
UINT nID = 0,
int nIconNormal = -1);

BOOL AppendODMenuW(wchar_t *lpstrText,
UINT nFlags = MF_OWNERDRAW,
UINT nID = 0,
int nIconNormal = -1);

BOOL AppendODMenuA(LPCSTR lpstrText,
UINT nFlags,
UINT nID,
CImageList *il,
int xoffset);

BOOL AppendODMenuW(wchar_t *lpstrText,
UINT nFlags,
UINT nID,
CImageList *il,
int xoffset);

BOOL InsertODMenuA(UINT nPosition,
LPCSTR lpstrText,
UINT nFlags = MF_OWNERDRAW,
UINT nID = 0,
int nIconNormal = -1);

BOOL InsertODMenuW(UINT nPosition,
wchar_t *lpstrText,
UINT nFlags = MF_OWNERDRAW,
UINT nID = 0,
int nIconNormal = -1);

BOOL InsertODMenuA(UINT nPosition,
LPCSTR lpstrText,
UINT nFlags,
UINT nID,
CImageList *il,
int xoffset);

BOOL InsertODMenuW(UINT nPosition,
wchar_t *lpstrText,
UINT nFlags,
UINT nID,
CImageList *il,
int xoffset);


BOOL ModifyODMenuA(const char *lpstrText,UINT nID=0,int nIconNormal=-1);
BOOL ModifyODMenuA(const char *lpstrText,UINT nID,CImageList *il,int xoffset);
BOOL ModifyODMenuA(const char *lpstrText,UINT nID,CBitmap *bmp);
BOOL ModifyODMenuA(const char *lpstrText,const char *OptionText,int nIconNormal);
BOOL ModifyODMenuW(wchar_t *lpstrText,UINT nID=0,int nIconNormal=-1);
BOOL ModifyODMenuW(wchar_t *lpstrText,UINT nID,CImageList *il,int xoffset);
BOOL ModifyODMenuW(wchar_t *lpstrText,UINT nID,CBitmap *bmp);
BOOL ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,int nIconNormal);
BCMenuData *NewODMenu(UINT pos,UINT nFlags,UINT nID,CString string);
void SynchronizeMenu(void);
void BCMenu::InitializeMenuList(int value);
void BCMenu::DeleteMenuList(void);
BCMenuData *BCMenu::FindMenuList(UINT nID);
virtual BOOL LoadMenu(LPCTSTR lpszResourceName); // Load a menu
virtual BOOL LoadMenu(int nResource); // ...
void AddFromToolBar(CToolBar* pToolBar, int nResourceID);
BOOL Draw3DCheckmark(CDC *dc, const CRect& rc,BOOL bSelected,
HBITMAP hbmCheck);
BOOL LoadToolbar(UINT nToolBar);
BOOL LoadToolbars(const UINT *arID,int n);

// new overrides for dynamic menu's
BOOL RemoveMenu(UINT uiId,UINT nFlags);
BOOL DeleteMenu(UINT uiId,UINT nFlags);
BOOL AppendMenuA(UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,int nIconNormal=-1);
BOOL AppendMenuA(UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CImageList *il,int xoffset);
BOOL AppendMenuA(UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CBitmap *bmp);
BOOL AppendMenuW(UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,int nIconNormal=-1);
BOOL AppendMenuW(UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CImageList *il,int xoffset);
BOOL AppendMenuW(UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CBitmap *bmp);
BOOL InsertMenuA(UINT nPosition,UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,int nIconNormal=-1);
BOOL InsertMenuA(UINT nPosition,UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CImageList *il,int xoffset);
BOOL InsertMenuA(UINT nPosition,UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CBitmap *bmp);
BOOL InsertMenuW(UINT nPosition,UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,int nIconNormal=-1);
BOOL InsertMenuW(UINT nPosition,UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CImageList *il,int xoffset);
BOOL InsertMenuW(UINT nPosition,UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CBitmap *bmp);
BCMenu* AppendODPopupMenuA(LPCSTR lpstrText);
BCMenu* AppendODPopupMenuW(wchar_t *lpstrText);

// Destoying:

virtual BOOL DestroyMenu();

// Generated message map functions
protected:
int m_iconX,m_iconY;
COLORREF m_bitmapBackground;
BOOL m_bitmapBackgroundFlag;
BOOL disable_old_style;
};

#endif

//**********************************************************************
...全文
274 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
netvc 2001-12-04
  • 打赏
  • 举报
回复
:(
netvc 2001-12-03
  • 打赏
  • 举报
回复
?????????为什么?????????????
netvc 2001-12-03
  • 打赏
  • 举报
回复
up吧!!
xxtliu 2001-12-03
  • 打赏
  • 举报
回复
看到过的,没有用过
netvc 2001-12-03
  • 打赏
  • 举报
回复
:(
netvc 2001-12-02
  • 打赏
  • 举报
回复
大家帮帮忙啊!!!不要看那个类也可以嘛!!!有什么办法呢???
kiko_lee 2001-12-02
  • 打赏
  • 举报
回复
呵呵,看了半天,头都大了。
bignacl 2001-12-02
  • 打赏
  • 举报
回复
too long!!
netvc 2001-12-02
  • 打赏
  • 举报
回复


为什么不理我啊!!!!!!!!!!!!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧