📄 mycombobox.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 + -