// ColorButton.cpp : インプリメンテーション ファイル // #include "stdafx.h" #include "ColorButton.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CColorButton CColorButton::CColorButton() { m_color = GetSysColor(COLOR_BTNFACE); } CColorButton::~CColorButton() { } BEGIN_MESSAGE_MAP(CColorButton, CButton) //{{AFX_MSG_MAP(CColorButton) ON_CONTROL_REFLECT(BN_CLICKED, OnClicked) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CColorButton メッセージ ハンドラ void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { CBrush br((lpDrawItemStruct->itemState&ODS_SELECTED) ? (m_color ? ((m_color&0xfefefe)>>1) : 0x303030) : m_color); FillRect(lpDrawItemStruct->hDC,&lpDrawItemStruct->rcItem,(HBRUSH)br); } void CColorButton::OnClicked() { CColorDialog dlg(m_color); if (dlg.DoModal() == IDOK) { m_color = dlg.GetColor(); Invalidate(); } } void CColorButton::PreSubclassWindow() { SetButtonStyle(BS_OWNERDRAW,FALSE); CButton::PreSubclassWindow(); }