{
public:
BEGIN_MSG_MAP_EX(CButtonImpl)
MSG_WM_SETCURSOR(OnSetCursor)
MSG_WM_LBUTTONDOWN(OnLButtonDown)
CHAIN_MSG_MAP_ALT(COwnerDraw
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
void DrawItem(LPDRAWITEMSTRUCT lpdis)
{
CDCHandle dc = lpdis->hDC;
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
dc.SaveDC();
if(lpdis->itemState & ODS_FOCUS)
dc.FillSolidRect(&lpdis->rcItem, RGB(255,0,0));
else
dc.FillSolidRect(&lpdis->rcItem, RGB(0, 0,255));
dcMem.SelectBitmap(img.m_hBitmap);
if(lpdis->itemState & ODS_SELECTED)
dc.BitBlt(1, 1, 80, 80, dcMem, 0, 0, SRCCOPY);
else
dc.BitBlt(0, 0, 80, 80, dcMem, 0, 0, SRCCOPY);
dcMem.RestoreDC(-1);
dcMem.RestoreDC(-1);
}