📄 01_9_12_6.asp.html
字号:
// Attributes</td></tr></table><table width=100% ><tr><td class=a14>
public:</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Operations</td></tr></table><table width=100% ><tr><td class=a14>
public:</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Overrides</td></tr></table><table width=100% ><tr><td class=a14>
// ClassWizard generated virtual function overrides</td></tr></table><table width=100% ><tr><td class=a14>
//{{AFX_VIRTUAL(CCustomMenu)</td></tr></table><table width=100% ><tr><td class=a14>
//}}AFX_VIRTUAL</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Implementation</td></tr></table><table width=100% ><tr><td class=a14>
public:</td></tr></table><table width=100% ><tr><td class=a14>
virtual ~CCustomMenu();</td></tr></table><table width=100% ><tr><td class=a14>
virtual void DrawItem( LPDRAWITEMSTRUCT);</td></tr></table><table width=100% ><tr><td class=a14>
virtual void MeasureItem( LPMEASUREITEMSTRUCT );</td></tr></table><table width=100% ><tr><td class=a14>
void SetTextColor (COLORREF );</td></tr></table><table width=100% ><tr><td class=a14>
void SetBackColor (COLORREF);</td></tr></table><table width=100% ><tr><td class=a14>
void SetHighlightColor (COLORREF);</td></tr></table><table width=100% ><tr><td class=a14>
void SetIconSize (int, int);</td></tr></table><table width=100% ><tr><td class=a14>
void SetHighlightStyle (HIGHLIGHTSTYLE );</td></tr></table><table width=100% ><tr><td class=a14>
void SetHighlightTextColor (COLORREF);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Generated message map functions</td></tr></table><table width=100% ><tr><td class=a14>
protected:</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_crText;</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_clrBack;</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_clrText;</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_clrHilight;</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF m_clrHilightText;</td></tr></table><table width=100% ><tr><td class=a14>
LOGFONT m_lf;</td></tr></table><table width=100% ><tr><td class=a14>
CFont m_fontMenu;</td></tr></table><table width=100% ><tr><td class=a14>
UINT m_iMenuHeight;</td></tr></table><table width=100% ><tr><td class=a14>
BOOL m_bLBtnDown;</td></tr></table><table width=100% ><tr><td class=a14>
CBrush m_brBackground,m_brSelect;</td></tr></table><table width=100% ><tr><td class=a14>
CPen m_penBack;</td></tr></table><table width=100% ><tr><td class=a14>
int m_iconX,m_iconY;</td></tr></table><table width=100% ><tr><td class=a14>
HIGHLIGHTSTYLE m_hilightStyle;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//{{AFX_MSG(CCustomMenu)</td></tr></table><table width=100% ><tr><td class=a14>
// NOTE - the ClassWizard will add and remove member functions here.</td></tr></table><table width=100% ><tr><td class=a14>
//}}AFX_MSG</td></tr></table><table width=100% ><tr><td class=a14>
};</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
///////////////////////////////////////////////////////////////////////////</td></tr></table><table width=100% ><tr><td class=a14>
//</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//{{AFX_INSERT_LOCATION}}</td></tr></table><table width=100% ><tr><td class=a14>
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#endif //!defined(AFX_CUSTOMMENU_H__FE5B01C3_1E02_11D1_B87A_0060979CDF6D__INCLUDED_)</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//*************************************************************************</td></tr></table><table width=100% ><tr><td class=a14>
// CustomMenu.cpp : implementation file</td></tr></table><table width=100% ><tr><td class=a14>
//</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include "stdafx.h"</td></tr></table><table width=100% ><tr><td class=a14>
#include "CustomMenu.h"</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#ifdef _DEBUG</td></tr></table><table width=100% ><tr><td class=a14>
#define new DEBUG_NEW</td></tr></table><table width=100% ><tr><td class=a14>
#undef THIS_FILE</td></tr></table><table width=100% ><tr><td class=a14>
static char THIS_FILE[] = __FILE__;</td></tr></table><table width=100% ><tr><td class=a14>
#endif</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
///////////////////////////////////////////////////////////////////////////</td></tr></table><table width=100% ><tr><td class=a14>
//</td></tr></table><table width=100% ><tr><td class=a14>
// CCustomMenu</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CCustomMenu::CCustomMenu()</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
m_clrText = GetSysColor (COLOR_MENUTEXT);</td></tr></table><table width=100% ><tr><td class=a14>
m_clrBack = GetSysColor (COLOR_MENU);</td></tr></table><table width=100% ><tr><td class=a14>
m_brBackground.CreateSolidBrush (m_clrBack);</td></tr></table><table width=100% ><tr><td class=a14>
m_penBack.CreatePen (PS_SOLID,0,m_clrBack);</td></tr></table><table width=100% ><tr><td class=a14>
m_crText = m_clrText;</td></tr></table><table width=100% ><tr><td class=a14>
m_bLBtnDown = FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
m_iconX = GetSystemMetrics ( SM_CXMENUCHECK);</td></tr></table><table width=100% ><tr><td class=a14>
m_iconY = GetSystemMetrics (SM_CYMENUCHECK );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
m_clrHilight = GetSysColor (COLOR_HIGHLIGHT);</td></tr></table><table width=100% ><tr><td class=a14>
m_brSelect.CreateSolidBrush (m_clrHilight);</td></tr></table><table width=100% ><tr><td class=a14>
m_clrHilightText = GetSysColor (COLOR_HIGHLIGHTTEXT);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
ZeroMemory ((PVOID) &m_lf,sizeof (LOGFONT));</td></tr></table><table width=100% ><tr><td class=a14>
NONCLIENTMETRICS nm;</td></tr></table><table width=100% ><tr><td class=a14>
nm.cbSize = sizeof (NONCLIENTMETRICS);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//Get the system metrics for the Captionfromhere</td></tr></table><table width=100% ><tr><td class=a14>
VERIFY (SystemParametersInfo (SPI_GETNONCLIENTMETRICS,0,&nm,0)); </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
m_lf = nm.lfMenuFont;</td></tr></table><table width=100% ><tr><td class=a14>
m_iMenuHeight = nm.iMenuHeight;</td></tr></table><table width=100% ><tr><td class=a14>
m_fontMenu.CreateFontIndirect (&m_lf);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CCustomMenu::~CCustomMenu()</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
if ((HBRUSH) m_brBackground != NULL)</td></tr></table><table width=100% ><tr><td class=a14>
m_brBackground.DeleteObject ();</td></tr></table><table width=100% ><tr><td class=a14>
if ((HFONT)m_fontMenu !=NULL)</td></tr></table><table width=100% ><tr><td class=a14>
m_fontMenu.DeleteObject ();</td></tr></table><table width=100% ><tr><td class=a14>
if ((HBRUSH)m_brSelect != NULL)</td></tr></table><table width=100% ><tr><td class=a14>
m_brSelect.DeleteObject ();</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
///////////////////////////////////////////////////////////////////////////</td></tr></table><table width=100% ><tr><td class=a14>
//</td></tr></table><table width=100% ><tr><td class=a14>
// CCustomMenu message handlers</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
void CCustomMenu::DrawItem (LPDRAWITEMSTRUCT lpDIS)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
ASSERT(lpDIS != NULL);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CDC* pDC = CDC::FromHandle(lpDIS->hDC);</td></tr></table><table width=100% ><tr><td class=a14>
CRect rect;</td></tr></table><table width=100% ><tr><td class=a14>
HICON hIcon;</td></tr></table><table width=100% ><tr><td class=a14>
COLORREF crText = m_crText;</td></tr></table><table width=100% ><tr><td class=a14>
// draw the colored rectangle portion</td></tr></table><table width=100% ><tr><td class=a14>
rect.CopyRect(&lpDIS->rcItem);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// draw the up/down/focused/disabled state</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
UINT action = lpDIS->itemAction;</td></tr></table><table width=100% ><tr><td class=a14>
UINT state = lpDIS->itemState;</td></tr></table><table width=100% ><tr><td class=a14>
CString strText;</td></tr></table><table width=100% ><tr><td class=a14>
LOGFONT lf;</td></tr></table><table width=100% ><tr><td class=a14>
lf = m_lf;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CFont dispFont;</td></tr></table><table width=100% ><tr><td class=a14>
CFont *pFont;</td></tr></table><table width=100% ><tr><td class=a14>
//GetWindowText(strText);</td></tr></table><table width=100% ><tr><td class=a14>
if (lpDIS->itemData != NULL)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
strText = (((MENUDATA*) (lpDIS->itemData))->menuText);</td></tr></table><table width=100% ><tr><td class=a14>
if ((((MENUDATA *)(lpDIS->itemData))->menuIconNormal) == -1)</td></tr></table><table width=100% ><tr><td class=a14>
hIcon = NULL;</td></tr></table><table width=100% ><tr><td class=a14>
else if (state & ODS_SELECTED)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
if ((((MENUDATA *)(lpDIS->itemData))->menuIconSelected) != -1)</td></tr></table><table width=100% ><tr><td class=a14>
hIcon = AfxGetApp ()->LoadIcon (((MENUDATA *)(lpDIS->itemData))->menuIconSelected);</td></tr></table><table width=100% ><tr><td class=a14>
else</td></tr></table><table width=100% ><tr><td class=a14>
hIcon = AfxGetApp()->LoadIcon (((MENUDATA*)(lpDIS->itemData))->menuIconNormal);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
else</td></tr></table><table width=100% ><tr><td class=a14>
hIcon = AfxGetApp()->LoadIcon (((MENUDATA*)(lpDIS->itemData))->menuIconNormal);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
TRACE1 ("Draw for %s\n", strText);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
else</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
strText.Empty();</td></tr></table><table width=100% ><tr><td class=a14>
hIcon = NULL;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
if ( (state & ODS_SELECTED) )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
// draw the down edges</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CPen *pOldPen = pDC->SelectObject (&m_penBack);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//You need only Text highlight and thats what you get</td></tr></table><table width=100% ><tr><td class=a14>
if (m_hilightStyle != Normal)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
pDC->FillRect (rect,&m_brBackground);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
else</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
pDC->FillRect (rect,&m_brSelect);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
pDC->SelectObject (pOldPen);</td></tr></table><table width=100% ><tr><td class=a14>
pDC->Draw3dRect (rect,GetSysColor (COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));</td></tr></table><table width=100% ><tr><td class=a14>
lf.lfWeight = FW_BOLD;</td></tr></table><table width=100% ><tr><td class=a14>
if ((HFONT)dispFont != NULL)</td></tr></table><table width=100% ><tr><td class=a14>
dispFont.DeleteObject ();</td></tr></table><table width=100% ><tr><td class=a14>
dispFont.CreateFontIndirect (&lf);</td></tr></table><table width=100% ><tr><td class=a14>
crText = m_clrHilightText;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -