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

📄 iconmenu.cpp

📁 改键工具
💻 CPP
字号:
#include "StdAfx.h"
#include ".\iconmenu.h"
//#include "DManager.h"
#include "WarcraftKey.h"

CIconMenu::CIconMenu(void)
{
}

CIconMenu::~CIconMenu(void)
{
}

void CIconMenu::MeasureItem( LPMEASUREITEMSTRUCT lpStruct )
{
	if (lpStruct->CtlType==ODT_MENU)
	{
		lpStruct->itemHeight = ITEMHEIGHT;
		lpStruct->itemWidth = ITEMWIDTH;
		CMenuItemInfo* m_iteminfo;
		m_iteminfo = (CMenuItemInfo*)lpStruct->itemData;
		lpStruct->itemWidth = ((CMenuItemInfo*)lpStruct->itemData)->m_ItemText.GetLength()*10;
		switch(m_iteminfo->m_ItemID)
		{
			case 0: //分隔条
				{
					lpStruct->itemHeight = 1;
					break;
				}	
		}
	}
}

void CIconMenu::DrawItem( LPDRAWITEMSTRUCT lpStruct )
{
	if (lpStruct->CtlType==ODT_MENU)
	{
		if(lpStruct->itemData == NULL)	return;
		unsigned int m_state = lpStruct->itemState;
		CDC* m_dc = CDC::FromHandle(lpStruct->hDC);
		//m_dc.Attach(lpStruct->hDC);

		CString str =  ((CMenuItemInfo*)(lpStruct->itemData))->m_ItemText;
		LPSTR m_str = str.GetBuffer(str.GetLength());

		int m_itemID = ((CMenuItemInfo*)(lpStruct->itemData))->m_ItemID;
		
		int m_itemicon = ((CMenuItemInfo*)(lpStruct->itemData))->m_IconIndex;
		CRect m_rect = lpStruct->rcItem;
		
		m_dc->SetBkMode(TRANSPARENT);
		
		switch(m_itemID)
		{
		case -2:
			{

				DrawTopMenu(m_dc,m_rect,(m_state&ODS_SELECTED)||(m_state&0x0040)); //0x0040 ==ODS_HOTLIGHT
				DrawItemText(m_dc,m_str,m_rect);
				break;
			}
		case -1:
			{	
				DrawItemText(m_dc,m_str,m_rect);
				break;
			}
		case 0:
			{
				DrawSeparater(m_dc,m_rect);
				break;
			}
		default:
			{	
				DrawComMenu(m_dc,m_rect,0xfaa0,0xf00ff,m_state&ODS_SELECTED);
				DrawItemText(m_dc,m_str,m_rect);
		//if (m_itemID == m_ItemLists[1].m_ItemID)
			//	if (m_state&ODS_SELECTED)
			DrawMenuTitle(m_dc,m_rect,"数据管理");				
				break;
			}
								
		}

			
	}
}

void CIconMenu::DrawTopMenu(CDC* m_pdc,CRect m_rect,BOOL m_selected )
{
	if (m_selected)
	{
		m_pdc->SelectStockObject(BLACK_PEN);
		m_pdc->Rectangle(&m_rect);
		m_rect.DeflateRect(1,1);
		m_pdc->FillSolidRect(m_rect,RGB(150, 185, 255));
	}
	else
	{
		CRect rect;
		AfxGetMainWnd()->GetClientRect(rect);
		rect.top = m_rect.top;
		rect.bottom = m_rect.bottom;
		rect.left= 360;
		rect.right +=4;
		//CRect c_rect(m_rect);
		m_pdc->FillSolidRect(&rect,RGB(200,187, 255));
		m_pdc->FillSolidRect(&m_rect,RGB(200,187, 255));
		//m_pdc->SelectStockObject(BLACK_PEN);
		//m_pdc->FillSolidRect(m_rect,RGB(100, 185, 255));
	}
}

void CIconMenu::DrawItemText(CDC* m_pdc,LPSTR str,CRect m_rect)
{

	m_rect.DeflateRect(40,0,0,0);
	m_pdc->DrawText(str,m_rect,DT_SINGLELINE|DT_VCENTER|DT_LEFT);

}

void CIconMenu::DrawSeparater(CDC* m_pdc,CRect m_rect)
{
	if (m_pdc != NULL)
	{
		m_rect.DeflateRect(25,0,0,0);
		m_pdc->Draw3dRect(m_rect,RGB(255,0,0),RGB(0,0,255));
	}
}
void CIconMenu::DrawComMenu(CDC* m_pdc,CRect m_rect,COLORREF m_fromcolor,COLORREF m_tocolor, BOOL m_selected )
{
	if (m_selected)
	{
		m_pdc->SelectStockObject(BLACK_PEN);

		//m_rect.InflateRect(0,0,0,0);
		m_rect.DeflateRect(25,1,0,2);
		m_pdc->Rectangle(m_rect);
		//m_rect.DeflateRect(0,1,1,1);

		CBitmap m_bitmap;
		m_bitmap.LoadBitmap(IDB_LEFTBITMAP);
		BITMAP m_size;
		m_bitmap.GetBitmap(&m_size);
		CDC m_memdc;
		m_memdc.CreateCompatibleDC(m_pdc);
		CGdiObject* m_oldobject;
		m_oldobject = m_memdc.SelectObject(&m_bitmap);

		//m_save = m_pdc->SaveDC();
		m_pdc->StretchBlt(m_rect.left+1,m_rect.top+1,m_rect.Width()-2,m_rect.Height()-2,&m_memdc,0,0,m_size.bmWidth,m_size.bmHeight,SRCCOPY);
		m_bitmap.DeleteObject();


		//m_memdc.SelectObject(m_oldobject);
	}
	else
	{
		//m_pdc->RestoreDC(m_save);
		m_pdc->FillSolidRect(m_rect,RGB(0x000000F9, 0x000000F8, 0x000000F7));
	}

}
void CIconMenu::DrawMenuTitle(CDC* m_pdc,CRect m_rect,CString m_title)
{
	CBitmap m_bitmap;
	m_bitmap.LoadBitmap(IDB_ITEMBITMAP);
	BITMAP m_size;
	m_bitmap.GetBitmap(&m_size);
	CDC m_memdc;
	m_memdc.CreateCompatibleDC(m_pdc);
	CGdiObject* m_oldobject;
	m_oldobject = m_memdc.SelectObject(&m_bitmap);

	//m_save = m_pdc->SaveDC();
	m_pdc->StretchBlt(0,0,24,m_rect.bottom,&m_memdc,0,0,m_size.bmWidth,m_size.bmHeight,SRCCOPY);
	m_bitmap.DeleteObject();
	CFont* m_oldfont = m_pdc->SelectObject(&m_titlefont);


	m_pdc->TextOut(m_rect.left+5,m_rect.Height()+65,m_title);
	//m_pdc->DrawText(m_title,m_rect,DT_SINGLELINE|DT_VCENTER |DT_LEFT);
		m_pdc->SelectObject(m_oldfont);
	m_isdrawtitle = FALSE;

}

⌨️ 快捷键说明

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