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

📄 mycombobox.cpp

📁 用VC编的电子日记软件
💻 CPP
字号:
// MYCombobox.cpp : implementation file
//

#include "stdafx.h"
#include "MYCombobox.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMYCombobox
#define SIZE_ICON  14
CMYCombobox::CMYCombobox()
{
	bkcolor=RGB(162,237,236);
}

CMYCombobox::~CMYCombobox()
{
}


BEGIN_MESSAGE_MAP(CMYCombobox, CComboBox)
	//{{AFX_MSG_MAP(CMYCombobox)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMYCombobox message handlers

void CMYCombobox::DrawItem(LPDRAWITEMSTRUCT lps) 
{
	// TODO: Add your code to draw the specified item
	CDC *dc=CDC::FromHandle(lps->hDC);
	CString drawtext;
	HICON drawicon=NULL;
	CFont ft;
	ft.CreateFont(16,
		0,
		0,
		0,
		FW_NORMAL,
		false,
		false,
		0,ANSI_CHARSET,
		OUT_DEVICE_PRECIS,
		CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY,
		DEFAULT_PITCH ,
		"");
	CFont *oldfont=dc->SelectObject(&ft);
	TEXTMETRIC textmetr;
	dc->GetTextMetrics(&textmetr);

	if(lps->itemID!=-1)
	{
		GetLBText(lps->itemID,drawtext);
        drawicon=(HICON)lps->itemData;
	}
	else
		drawtext="请选择驱动器";
	if((lps->itemState&ODS_SELECTED)&&(lps->itemAction&(ODA_SELECT|ODA_DRAWENTIRE)))
	{
		dc->FillSolidRect(&lps->rcItem,::GetSysColor(COLOR_HIGHLIGHT));
		dc->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
		dc->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
		dc->TextOut(lps->rcItem.left+SIZE_ICON+2,lps->rcItem.top+(SIZE_ICON+2-textmetr.tmHeight)/2,drawtext);
		if(drawicon!=NULL)
		{
			DrawIconEx(dc->GetSafeHdc(),lps->rcItem.left,lps->rcItem.top+2,drawicon,SIZE_ICON,SIZE_ICON,NULL,(HBRUSH)NULL,DI_NORMAL);
		}
	}
	else if(lps->itemAction&(ODA_SELECT|ODA_DRAWENTIRE))
	{
		dc->FillSolidRect(&lps->rcItem,bkcolor);
		dc->SetBkColor(bkcolor);
		dc->SetTextColor(::GetSysColor(COLOR_WINDOWTEXT));

		dc->TextOut(lps->rcItem.left+SIZE_ICON+2,lps->rcItem.top+(SIZE_ICON+2-textmetr.tmHeight)/2,drawtext);
		if(drawicon!=NULL)
		{
			DrawIconEx(dc->GetSafeHdc(),lps->rcItem.left,lps->rcItem.top+2,drawicon,SIZE_ICON,SIZE_ICON,NULL,(HBRUSH)NULL,DI_NORMAL);
		}
	}
	if(lps->itemAction&ODA_FOCUS)
		dc->DrawFocusRect(&lps->rcItem);
    dc->SelectObject(oldfont);
	ft.DeleteObject();

}

void CMYCombobox::MeasureItem(LPMEASUREITEMSTRUCT lps) 
{
	// TODO: Add your code to determine the size of specified item
	lps->itemHeight=SIZE_ICON+2;
}
int CMYCombobox::AddItem(HICON ItemIcon,const CString ItemText)
{
	return InSertItem(GetCount(),ItemIcon,ItemText);
}
int CMYCombobox::InSertItem(int nIndex,HICON ItemIcon,const CString ItemText)
{
	int n=CComboBox::InsertString(nIndex,ItemText);
	if(n!=CB_ERR && n!=CB_ERRSPACE)
	{
		SetItemData(n,(DWORD)ItemIcon);
	}
	return n;
}

⌨️ 快捷键说明

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