⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coolmenu.h

📁 (VC)又一个酒店管理系统, (VC)又一个酒店管理系统,(VC)又一个酒店管理系统
💻 H
字号:
/*########################################################################
	Filename: 	coolmenu.h
	----------------------------------------------------
	Remarks:	...
	----------------------------------------------------
	
  ########################################################################*/
#if !defined(_ANYOU_COOLMENU_H)
#define _ANYOU_COOLMENU_H

#if _MSC_VER > 1000
#pragma once
#endif 

#include "..\\autocomplete\\SubClass.h"
#include <afxtempl.h>

//Menu Level:------------------------------
#define MDS_TOP_MENU		 1	//顶部菜单
#define MDS_SUBMENU		     0	//其他子菜单
#define MDS_TOP_SUBMENU		-1	//主菜单
#define MDS_TOP_ENDSUBMENU	-2	//主菜单最后一项

//Menu Style:------------------------------
#define CMS_ICONBAR			0x00000001
#define CMS_LOGOBAR			0x00000002
#define CMS_32IMAGELIST     0x00000010

#define MENU_SPACE 3

#if !defined(ODS_HOTLIGHT)
#define	ODS_HOTLIGHT	    0x0040
#endif

/*########################################################################
			  ------------------------------------------------
						  菜单子类化类 CCoolMenuHook
			  ------------------------------------------------
  ########################################################################*/
class CCoolMenuHook : public CSubclassWnd
{
protected:
	LRESULT WindowProc(UINT uMesssage, WPARAM wparam, LPARAM lparam);
};

/*########################################################################
			  ------------------------------------------------
								CoolMenu 类
			  ------------------------------------------------
  ########################################################################*/
class CCoolMenu : public CMenu  
{
	//菜单项类-----------------------------------
	typedef class CCoolMenuItem
	{
	public:
		void SetItemName(CString sname);
	public:
		CString strText;			//菜单文本
		CString strKeyName;			//快捷键提示文本
		int		nMenuLevel;			//菜单级别
		int     nMenuID;			//菜单ID,-2:顶级菜单,-1:弹出菜单,0:分隔条 
		HMENU	hMenu;
	}COOLMENU, *LPCOOLMENU;

	friend class CCoolMenuHook;
	friend class CMenuWndHook;
	
//成员函数------------------------------------------------------
public:
	CCoolMenu();
	virtual ~CCoolMenu();
	
	BOOL LoadMenu(UINT uMenuID, UINT uToolBarID = 0);
	BOOL Attach(HMENU hMenu, UINT uToolBarID = 0);
	BOOL ModifyStyle(HMENU hMenu, int nlevel = MDS_SUBMENU);
	void AppendMenu(UINT uFlags, UINT uNewMenuItemID, CString strNewMenuItem, int nStyle = MDS_SUBMENU);
	void ClearData();
	HMENU Detach();

//操作----------------------------------------------------------
public:
	static void SubClass(HWND hwnd);
	static void UnSubClass();
	static BOOL InitImageList();
    static HBITMAP CreateImage(HBITMAP hbitmap, int nstyle, BOOL bAlpha, COLORREF crBackColor, COLORREF crMarkColor);
//属性-----------------------------------------------------------
public:
	//图像列表---------------------------------
	static int SetImageList(UINT uToolBarID,UINT uBitmapID = NULL, BOOL bAlpha = FALSE);
	
	//菜单外观---------------------------------
	static BOOL SetLogoImage(UINT uBitmapID = NULL, int nwidth = 0);
	static void SetLogoText(CString strText, COLORREF color);

	//菜单颜色-------------------------------------
	static void SetBackGroundBmp(UINT nBitmapID){nBackGroundbmpID=nBitmapID;}
	static void SetMenuColor(COLORREF color)       {m_crMenuColor        = color;}
	static void SetTextColor(COLORREF color)       {m_crTextColor        = color;}
	static void SetIconBarColor(COLORREF color)    {m_crIconBarColor     = color;}
	static void SetLightBarColor(COLORREF color)   {m_crLightBarColor    = color;}
	static void SetLightBarStartColor(COLORREF color){m_crLightBarStartColor = color;}
	static void SetLightBarEndColor(COLORREF color){m_crLightBarEndColor = color;}
	static void SetHighLightColor(COLORREF color)  {m_crHighLightColor   = color;}
	static COLORREF GetMenuColor()		 {return m_crMenuColor;}
	static COLORREF GetTextColor()		 {return m_crTextColor;}
	static COLORREF GetIconBarColor()	 {return m_crIconBarColor;}
	static COLORREF GetLightBarColor()   {return m_crLightBarColor;}
	static COLORREF GetLightBarStartColor(){return m_crLightBarStartColor;}
	static COLORREF GetLightBarEndColor(){return m_crLightBarEndColor;}
	static COLORREF GetHighLightColor()  {return m_crHighLightColor;}
	
	//菜单风格-------------------------------------
	static void SetStyle(DWORD dwStyle) {m_dwStyle = dwStyle;}
	static DWORD GetStyle() {return m_dwStyle;}

//实现-----------------------------------------------------------
protected:
	//绘制函数--------------------------------------
	static void DrawLightBar(CDC *pDC, CRect rect, BOOL bfill = TRUE);
	static void DrawLogoBar(CDC *pDC, CRect rect);
	static void DrawMenuBar(CDC* pDC, CRect rect);
	static void DrawGradsRect(CDC *pDC,  CRect &rect, COLORREF statColor, COLORREF endColor);
	static void DrawBackGroundBmp(CDC*pDC,CRect rect,BOOL nFill=false);
	
	//铺助函数--------------------------------------
	static int  GetIDFromToolBar(UINT uToolBarID, CUIntArray *uIDArray);
	static int  GetIndex(UINT uID);

//消息处理函数---------------------------------------------------
public:
	static void DrawItem(LPDRAWITEMSTRUCT lpDIS);
	static void MeasureItem(LPMEASUREITEMSTRUCT lpMIS);
	
//数据-----------------------------------------------------------
protected:
	CObList m_obMenuList;				//菜单项对象列表.

	static DWORD m_dwStyle;
	static CCoolMenuHook m_MenuHook;
	
	//菜单图标图像列表-------------------------------
	static CImageList m_iImageList;
	static CImageList m_iHotImageList;
	static CImageList m_iDisabledImageList;

	static CUIntArray m_uIDArray;		//菜单项ID数组.

	static CSize m_szMenuLogo;			//主菜单左LOGO图像栏大小.
	static CSize m_szMenuIcon;			//图标大小.
    static UINT nBackGroundbmpID;       //要填充菜单背景的位图ID
	static UINT m_uLogoBmpID;			//主菜单左LOGO图像ID.
	static UINT m_uBitmapID;			//图像列表图像资源ID.
	static CString m_sLogoText;			//LOGO字符串.
	static CRect m_rcMenuItem;			//当前选择的顶级菜单项的矩形区域.
    
	static COLORREF m_crLogoColor;			//LOGO图像的背景颜色.
	static COLORREF m_crTextColor;			//字体颜色.
	static COLORREF m_crMenuColor;			//菜单颜色.
	static COLORREF m_crIconBarColor;		//图标栏背景颜色.
	static COLORREF m_crLightBarColor;		//光标条颜色.
	static COLORREF m_crLightBarStartColor;
	static COLORREF m_crLightBarEndColor;	//光标条颜色.
	static COLORREF m_crMarkColor;			//图片透明色.
	static COLORREF m_crHighLightColor;		//高亮字体颜色.
};

#define MENU_STYLE_XP		0x00000001
#define MENU_STYLE_XP2		0x00000006
#define MENU_STYLE_DEFAULT  0x00000002
#define MENU_STYLE_SNOW		0x00000003
#define MENU_STYLE_GREEN	0x00000004
#define MENU_STYLE_BLUE		0x00000005

/*########################################################################
			  ------------------------------------------------
						    CCoolMenuTheme 类
			  ------------------------------------------------
  ########################################################################*/
class CCoolMenuTheme : public CObject
{
//建构---------------------------------------------------------
public:
	static void SetTheme(DWORD dwstyle);
	CCoolMenuTheme();
	~CCoolMenuTheme();
};
/*########################################################################
			  ------------------------------------------------
							 CMenuWndHook 类
			  ------------------------------------------------
  ########################################################################*/
class CMenuWndHook
{
//建构---------------------------------------------------------
public:
    CMenuWndHook(HWND hWnd);
	~CMenuWndHook();
	static void InstallHook();
	static void UnInstallHook();

//消息----------------------------------------------------------
public:
	static LRESULT CALLBACK CoolMenuProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT CALLBACK WindowHook (int code, WPARAM wParam, LPARAM lParam);

	void OnNcCalcsize(NCCALCSIZE_PARAMS* lpncsp);
	void OnShowWindow(BOOL bShow);
	void OnNcDestroy();
	void OnPrint(CDC* pDC);
	void OnNcPaint();
	void OnWindowPosChanging(WINDOWPOS* pWindowPos);

//操作----------------------------------------------------------
public:
	static CMenuWndHook* AddWndHook(HWND hwnd);
	static CMenuWndHook* GetWndHook(HWND hwnd);

//数据-----------------------------------------------------------
protected:
	CRect m_rcMenu;
	CPoint m_ptMenu;
	HWND m_hWnd;
	CBitmap m_bmpBack;

	static CMap<HWND, HWND, CMenuWndHook*, CMenuWndHook*> m_WndMenuMap;
    static HHOOK m_hMenuHook;
public:
	static COLORREF m_crFrame[4];
};
#endif // !defined(_ANYOU_COOLMENU_H)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -