123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- #if !defined(AFX_MENUXP_H__8FC060B7_2454_11D5_99BD_5254AB339987__INCLUDED_)
- #define AFX_CUSTMENU_H__8FC060B7_2454_11D5_99BD_5254AB339987__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif
- class CMenuXPItem
- {
- public:
- DWORD m_dwMagicNum;
- DWORD m_dwID;
- bool m_bSeparator;
- bool m_bSideBar;
- bool m_bButtonOnly;
- CString m_strText;
- HICON m_hIcon;
- int m_nSize;
- public:
- CMenuXPItem()
- {
- m_dwMagicNum = 0x0505a0a0;
- m_dwID = 0;
- m_bSeparator = false;
- m_bSideBar = false;
- m_bButtonOnly = false;
- m_hIcon = NULL;
- m_nSize = 16;
- };
- virtual ~CMenuXPItem()
- {
- if (m_hIcon)
- ::DestroyIcon(m_hIcon);
- }
- BOOL IsMyData(void) { return m_dwMagicNum == 0x0505a0a0; };
- };
- class CMenuXPText : public CMenuXPItem
- {
- public:
- CMenuXPText(DWORD dwID, LPCTSTR strText, HICON hIcon = NULL) : CMenuXPItem()
- {
- m_dwID = dwID;
- m_strText = strText;
- m_hIcon = hIcon;
- }
- };
- class CMenuXPSeparator : public CMenuXPItem
- {
- public:
- CMenuXPSeparator() : CMenuXPItem()
- {
- m_bSeparator = true;
- }
- };
- class CMenuXPSideBar : public CMenuXPItem
- {
- public:
- CMenuXPSideBar(int nSize = 32, LPCTSTR strText = NULL, HICON hIcon=NULL, DWORD dwID=0) : CMenuXPItem()
- {
- m_dwID = dwID;
- m_bSideBar = true;
- m_strText = strText;
- m_hIcon = hIcon;
- m_nSize = nSize;
- m_dwID = dwID;
- }
- };
- class CMenuXPButton : public CMenuXPItem
- {
- public:
- CMenuXPButton(DWORD dwID, HICON hIcon = NULL) : CMenuXPItem()
- {
- m_dwID = dwID;
- m_bButtonOnly = true;
- m_hIcon = hIcon;
- }
- };
- class CMenuXP : public CMenu
- {
- DECLARE_DYNAMIC(CMenuXP)
- public:
- int CYBUTTONMARGIN;
- CMenuXP();
- virtual ~CMenuXP();
-
- typedef enum
- {
- STYLE_OFFICE,
- STYLE_STARTMENU,
- STYLE_XP
- } MENUSTYLE;
-
- BOOL AddSideBar(CMenuXPSideBar *pItem);
- BOOL AppendODMenu2(UINT nFlags, CMenuXPItem *pItem, ACCEL *pAccel=0);
- BOOL AppendSeparator(void);
- BOOL AppendODPopup(UINT nFlags, CMenuXP *pPopup, CMenuXPItem *pItem);
- void Break(void);
- void BreakBar(void);
- protected:
- CFont m_fontMenu;
- COLORREF m_clrBackGround;
- COLORREF m_clrSelectedBar;
- COLORREF m_clrText;
- COLORREF m_clrSelectedText;
- COLORREF m_clrDisabledText;
- COLORREF m_clrSideBarStart;
- COLORREF m_clrSideBarEnd;
- COLORREF m_clrIconArea;
- BOOL m_bBreak;
- BOOL m_bBreakBar;
- MENUSTYLE m_Style;
- public:
- void SetBackColor(COLORREF clr) { m_clrBackGround = clr; }
- void SetSelectedBarColor(COLORREF clr) { m_clrSelectedBar = clr; }
- void SetTextColor(COLORREF clr) { m_clrText = clr; }
- void SetSelectedTextColor(COLORREF clr) { m_clrSelectedText = clr; }
- void SetDisabledTextColor(COLORREF clr) { m_clrDisabledText = clr; }
- void SetSideBarStartColor(COLORREF clr) { m_clrSideBarStart = clr; }
- void SetSideBarEndColor(COLORREF clr) { m_clrSideBarEnd = clr; }
- void SetIconAreaColor(COLORREF clr) { m_clrIconArea = clr; }
-
- void SetMenuStyle(MENUSTYLE style) { m_Style = style; }
- BOOL SetMenuFont(LOGFONT lgfont);
-
- CMenuXP *FindSubMenuFromID(DWORD dwID);
- public:
- virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
- virtual void MeasureItem( LPMEASUREITEMSTRUCT lpMeasureItemStruct );
- static LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
- protected:
- virtual void DrawBackGround(CDC *pDC, CRect rect, BOOL bSelected, BOOL bDisabled);
- virtual void DrawButton(CDC *pDC, CRect rect, BOOL bSelected, BOOL bDisabled, BOOL bChecked);
- virtual void DrawIcon(CDC *pDC, CRect rect, HICON hIcon, BOOL bSelected, BOOL bDisabled);
- virtual void DrawSideBar(CDC *pDC, CRect rect, HICON hIcon, CString strText);
- virtual void DrawText(CDC *pDC, CRect rect, CString strText, BOOL bSelected, BOOL bDisabled, BOOL bBold);
- virtual void DrawCheckMark(CDC *pDC, CRect rect, BOOL bSelected);
- virtual void DrawMenuText(CDC& dc, CRect rc, CString text, COLORREF color);
- virtual void DrawIconArea(CDC *pDC, CRect rect, BOOL bSelected, BOOL bDisabled, BOOL bChecked);
- void Clear(void);
-
- HBITMAP CreateGradientBMP(HDC hDC,COLORREF cl1,COLORREF cl2,int nWidth,int nHeight,int nDir,int nNumColors);
- void DrawEmbossed(CDC *pDC, HICON hIcon, CRect rect, BOOL bColor = FALSE);
- void FillRect(CDC *pDC, const CRect& rc, COLORREF color);
- };
- #endif
|