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

📄 mmenu.cpp

📁 MFC编程实例
💻 CPP
字号:
#include "stdafx.h"
#include "MMenu.h"
#include "resource.h"

MCMenu::MCMenu() : CMenu()
{
	m_bmpQuestion.LoadBitmap(IDB_BITMAP_QUESTION);
	m_bmpQuestionSel.LoadBitmap(IDB_BITMAP_QUESTIONSEL);
	m_bmpSmile.LoadBitmap(IDB_BITMAP_SMILE);
	m_bmpSmileSel.LoadBitmap(IDB_BITMAP_SMILESEL);
}

MCMenu::~MCMenu()
{
	Detach();
}

void MCMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
	BITMAP bm;

	switch(lpMeasureItemStruct->itemData)
	{
		case MENUTYPE_SMILE:
		{
			m_bmpSmile.GetBitmap(&bm);
			break;
		}
		case MENUTYPE_QUESTION:
		{
			m_bmpQuestion.GetBitmap(&bm);
			break;
		}
	}
	lpMeasureItemStruct->itemWidth=bm.bmWidth;
	lpMeasureItemStruct->itemHeight=bm.bmHeight;
}

void MCMenu::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	CDC *ptrDC;
	CDC dcMem;
	CBitmap *ptrBmpOld;
	CBitmap *ptrBmp;
	CRect rect;

	if(!(lpDrawItemStruct->CtlType & ODT_MENU))
	{
		CMenu::DrawItem(lpDrawItemStruct);
		return;
	}

	ptrDC=CDC::FromHandle(lpDrawItemStruct->hDC);
	dcMem.CreateCompatibleDC(ptrDC);

	if(lpDrawItemStruct->itemState & ODS_SELECTED)
	{
		switch(lpDrawItemStruct->itemData)
		{
			case MENUTYPE_SMILE:
			{
				ptrBmp=&m_bmpSmileSel;
				break;
			}
			case MENUTYPE_QUESTION:
			{
				ptrBmp=&m_bmpQuestionSel;
				break;
			}
		}
	}
	else
	{
		switch(lpDrawItemStruct->itemData)
		{
			case MENUTYPE_SMILE:
			{
				ptrBmp=&m_bmpSmile;
				break;
			}
			case MENUTYPE_QUESTION:
			{
				ptrBmp=&m_bmpQuestion;
				break;
			}
		}
	}	
	
	ptrBmpOld=dcMem.SelectObject(ptrBmp);
	rect=lpDrawItemStruct->rcItem;
	ptrDC->BitBlt
	(
		rect.left,
		rect.top,
		rect.Width(),
		rect.Height(),
		&dcMem,
		0,
		0,
		SRCCOPY
	);
	dcMem.SelectObject(ptrBmpOld);
}

⌨️ 快捷键说明

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