drawmenudlg.h

来自「《Visual C++视频技术方案宝典》配套光盘」· C头文件 代码 · 共 91 行

H
91
字号
// DrawMenuDlg.h : header file
//

#if !defined(AFX_DRAWMENUDLG_H__B5A3322F_5662_4505_9B97_F9B6828AD31A__INCLUDED_)
#define AFX_DRAWMENUDLG_H__B5A3322F_5662_4505_9B97_F9B6828AD31A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CDrawMenuDlg dialog

const int MAX_MENUCOUNT = 60,ITEMHEIGHT = 26,ITEMWIDTH= 180; //菜单项数量

/*************************************
CMenuItemInfo结构用于记录菜单项信息
*************************************/
struct CMenuItemInfo
{
	CString m_ItemText; //菜单项文本
	int m_IconIndex;    //菜单项索引
	int m_ItemID;       //菜单标记 -2顶层菜单,-1弹出式菜单,0分隔条,其他普通菜单
};

class CIconMenu : public CMenu  
{
public:
	CMenuItemInfo m_ItemLists[MAX_MENUCOUNT]; //菜单项信息
	int m_index;                              //临时索引
	int m_iconindex;
	CImageList m_imagelist;                   //存储菜单项图标

	CIconMenu();
	BOOL ChangeMenuItem(CMenu* m_menu,BOOL m_Toped = FALSE);
	BOOL  AttatchMenu(HMENU m_hmenu);
	void DrawItemText(CDC* m_pdc,LPSTR str,CRect m_rect);
	void DrawTopMenu(CDC* m_pdc,CRect m_rect,BOOL m_selected = FALSE); //绘制顶层菜单
	void DrawSeparater(CDC* m_pdc,CRect m_rect);                       //绘制分隔条
	void DrawComMenu(CDC* m_pdc,CRect m_rect,COLORREF m_fromcolor,COLORREF m_tocolor, BOOL m_selected = FALSE);
	void DrawMenuIcon(CDC* m_pdc,CRect m_rect,int m_icon );
	
	//override memu's viutual method
	virtual ~CIconMenu();
	virtual void MeasureItem( LPMEASUREITEMSTRUCT lpStruct ); //设置菜单项大小
	virtual void DrawItem( LPDRAWITEMSTRUCT lpStruct );       //重绘菜单项

};


class CDrawMenuDlg : public CDialog
{
// Construction
public:
	CDrawMenuDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CDrawMenuDlg)
	enum { IDD = IDD_DRAWMENU_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDrawMenuDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;
	
	CIconMenu  m_Menu;
	// Generated message map functions
	//{{AFX_MSG(CDrawMenuDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
	afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
	virtual void OnOK();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DRAWMENUDLG_H__B5A3322F_5662_4505_9B97_F9B6828AD31A__INCLUDED_)

⌨️ 快捷键说明

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