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

📄 coolmenu.h

📁 这是书上的代码
💻 H
字号:
#ifndef _COOL_MENU_
#define _COOL_MENU_

//菜单项类
class CMenuItem
{
 public:
  CMenuItem()
  {
   bSeperator=FALSE;
   hItemIcon=NULL;
   strItemText.Empty();
  }
  HICON hItemIcon;//图标句柄
  CString strItemText;//菜单项内容
  BOOL bSeperator;//是否是分割条	
};

//自画式菜单类
class CCoolMenu:public CMenu
{
 public:
  //构造函数,初始化各种数据
  CCoolMenu();
  //析构函数,清除菜单
  ~CCoolMenu();
  //在nPos前插入一个菜单项
  void InsertMenuItem(UINT nID,CMenuItem *pMenuItem,int nPos=0);
  //追加一个菜单项
  void AppendMenuItem(UINT nID,CMenuItem *pMenuItem);
  //设置垂直条位图的宽度
  void SetBitmapWidth(int nWidth);
  //设置菜单项文字区长度
  void SetTextWidth(int nWidth) {m_szText.cx=nWidth;}
  //设置选中菜单项时的渐变色条的起止颜色
  void SetBarColor(COLORREF cStartColor,COLORREF cEndColor) {m_cStartColor=cStartColor;m_cEndColor=cEndColor;}
  //设置采用函数绘制渐变色垂直条位图的起止颜色
  void SetBitmapColor(COLORREF cStartColor,COLORREF cEndColor) {m_cBitmapStartColor=cStartColor;m_cBitmapEndColor=cEndColor;}
  //设置图标
  //bVisible=TRUE:显示图标,否则不显示
  //bSmall=TRUE:显示16X16图标,否则显示32X32图标
  void SetIcon(BOOL bVisible=TRUE,BOOL bSmall=TRUE);
  //设置垂直条位图
  //nID=0:指示程序采用函数绘制垂直条位图,否则加载位图资源nID
  void SetBitmap(BOOL bVisible=TRUE,UINT nID=0);
 protected:
  //绘制垂直条位图
  void DrawBitmap(CDC *pDC);
  //绘制渐变色条(cStart-->cEnd)
  //bHorizon=TRUE:颜色沿水平方向渐变,否则是垂直方向
  void DrawGradientRect(CDC *pDC,CRect rect,COLORREF cStart,COLORREF cEnd,BOOL bHorizon=TRUE);
  //绘制菜单
  virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  //计算菜单项大小
  virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);  
 private:
  int m_nCount,m_nItems;//菜单项个数
  int m_nIconOffset,m_nTextOffset;//图标和菜单项文字的偏移量
  CSize m_szBitmapSize,m_szIcon,m_szText;//垂直条位图矩形大小、图标矩形大小和文字区矩形大小
  CSize IconSize;//图标大小,其值为16X16或32X32
  BOOL m_bIcon,m_bBitmap;//指示是否显示图标和垂直条位图
  BOOL m_bBitmapWidth;//指示是否由用户指定垂直条位图的宽度
  CBitmap m_nBitmap;//垂直条位图
  COLORREF m_cStartColor,m_cEndColor;//选中菜单项时的渐变色条的起止颜色
  COLORREF m_cBitmapStartColor,m_cBitmapEndColor;//采用函数绘制垂直条位图时的起止颜色
  COLORREF m_cMenuColor;//菜单背景色
  COLORREF m_cNormalTextColor,m_cSelectedTextColor;//菜单项正常显示时的文字颜色和选中时的文字颜色
};
#endif

⌨️ 快捷键说明

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