📄 imagecombobox.cpp
字号:
// ImageComboBox.cpp : implementation file
//
#include "stdafx.h"
#include "Controls.h"
#include "ImageComboBox.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImageComboBox
CImageComboBox::CImageComboBox()
{
m_pImages = NULL;
}
CImageComboBox::~CImageComboBox()
{
}
BEGIN_MESSAGE_MAP(CImageComboBox, CComboBox)
//{{AFX_MSG_MAP(CImageComboBox)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImageComboBox message handlers
void CImageComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
UINT nItem = lpDrawItemStruct->itemID;
if (nItem == (UINT) -1)
return;
CDC dc;
dc.Attach (lpDrawItemStruct->hDC);
CBrush brushWhite;
CBrush brushSel;
CRect rc = lpDrawItemStruct->rcItem;
brushWhite.CreateSolidBrush (GetSysColor (COLOR_WINDOW));
brushSel.CreateSolidBrush (GetSysColor (lpDrawItemStruct->itemState & ODS_SELECTED ? COLOR_HIGHLIGHT : COLOR_WINDOW));
dc.SetTextColor (GetSysColor (lpDrawItemStruct->itemState & ODS_SELECTED ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT));
dc.FillRect (rc, &brushWhite);
dc.SetBkMode (TRANSPARENT);
POSITION pos = m_ComboData.FindIndex (nItem);
COMBOIMAGEDATA ld = m_ComboData.GetAt (pos);
if (m_pImages != NULL)
{
IMAGEINFO ii;
m_pImages->Draw (&dc, ld.nImage, CPoint(rc.left, rc.top), lpDrawItemStruct->itemState & ODS_SELECTED ? ILD_BLEND : ILD_TRANSPARENT);
m_pImages->GetImageInfo(ld.nImage, &ii);
rc.left += ii.rcImage.right - ii.rcImage.left;
}
//
// Add four pixels to the left margin to keep from
// butting up against the wall or image.
//
rc.left += 4;
dc.FillRect (rc, &brushSel);
if (lpDrawItemStruct->itemState & ODS_FOCUS)
dc.DrawFocusRect (&rc);
CSize sz = dc.GetTextExtent (ld.Text);
rc.top += (rc.bottom - rc.top - sz.cy) / 2;
dc.DrawText (ld.Text, &rc, DT_VCENTER);
dc.Detach ();
}
void CImageComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
}
void CImageComboBox::AddItem(COMBOIMAGEDATA &cd)
{
if (cd.nParentItem == -1)
{
m_ComboData.AddTail (cd);
AddString (cd.Text);
return;
}
}
void CImageComboBox::SetImageList(CImageList *pImages)
{
m_pImages = pImages;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -