www.pudn.com > colortable.zip > StockCombo.cpp
/*****************************************************************************
* Change Log
* Date | Change
*-----------+-----------------------------------------------------------------
* 13-Jan-02 | Created
*****************************************************************************/
// StockCombo.cpp : implementation file
//
#include "stdafx.h"
#include "colors.h"
#include "StockCombo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStockCombo
CStockCombo::CStockCombo()
{
}
CStockCombo::~CStockCombo()
{
}
BEGIN_MESSAGE_MAP(CStockCombo, CComboBox)
//{{AFX_MSG_MAP(CStockCombo)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStockCombo message handlers
void CStockCombo::DrawItem(LPDRAWITEMSTRUCT dis)
{
CRect r = dis->rcItem;
CDC * dc = CDC::FromHandle(dis->hDC);
COLORREF txcolor;
COLORREF bkcolor;
CSize sz = dc->GetTextExtent(CString(_T("255,255,255 ")));
int saved = dc->SaveDC();
if(dis->itemState & ODS_SELECTED)
{ /* selected */
if(::GetFocus() == m_hWnd)
{ /* has focus */
bkcolor = ::GetSysColor(COLOR_HIGHLIGHT);
txcolor = ::GetSysColor(COLOR_HIGHLIGHTTEXT);
} /* has focus */
else
{ /* no focus */
bkcolor = ::GetSysColor(COLOR_3DFACE);
txcolor = ::GetSysColor(COLOR_WINDOWTEXT);
} /* no focus */
} /* selected */
else
{ /* unselected */
if(dis->itemState & (ODS_DISABLED | ODS_GRAYED))
txcolor = ::GetSysColor(COLOR_GRAYTEXT);
else
txcolor = ::GetSysColor(COLOR_WINDOWTEXT);
bkcolor = ::GetSysColor(COLOR_WINDOW);
} /* unselected */
dc->FillSolidRect(&r, bkcolor);
CRect focus;
if(dis->itemID != (UINT)-1
&& (dis->itemState & (ODS_DISABLED | ODS_GRAYED)) == 0)
{ /* has item */
CRect block = r;
block.right = r.Height();
dc->FillSolidRect(&block, (COLORREF)dis->itemData);
r.left += r.Height();
focus = r;
dc->SetBkColor(bkcolor);
dc->SetTextColor(txcolor);
CString s;
r.left += ::GetSystemMetrics(SM_CXBORDER);
s.Format(_T("%d,%d,%d"), GetRValue(dis->itemData),
GetGValue(dis->itemData),
GetBValue(dis->itemData));
dc->TextOut(r.left, r.top, s);
r.left += sz.cx;
GetLBText(dis->itemID, s);
dc->TextOut(r.left, r.top, s);
} /* has item */
if(dis->itemState & ODS_FOCUS && dis->itemAction != ODA_SELECT)
dc->DrawFocusRect(&focus);
dc->RestoreDC(saved);
}