본문 바로가기
C & C++/MFC 컨트롤

[Ctrl] 컨트롤 색상변경

by izen8 2011. 5. 21.
반응형



 //  Edit  컨트롤과  Control  형  멤버  변수  m_ctrlEdit  와  연결

//  ControlColorDlg.h
class  CControlColorDlg  :  public  CDialog
{
//  Construction
public:
   CControlColorDlg(CWnd*  pParent  =  NULL);   //  standard  constructor

   CBrush  m_brush;  //  브러시  인스턴스  선언
//...
}


//  ControlColorDlg.cpp
//  컨트롤의  배경을  칠할  브러시  생성
CControlColorDlg::CControlColorDlg(CWnd*  pParent  /*=NULL*/)
   :  CDialog(CControlColorDlg::IDD,  pParent)
{
   //{{AFX_DATA_INIT(CControlColorDlg)
      //  NOTE:  the  ClassWizard  will  add  member  initialization  here
   //}}AFX_DATA_INIT
   //  Note  that  LoadIcon  does  not  require  a  subsequent  DestroyIcon  in  Win32
   m_hIcon  =  AfxGetApp()->LoadIcon(IDR_MAINFRAME);

   m_brush.CreateSolidBrush(RGB(255,  0,  0));  //  추가
}

//  WM_CTLCOLOR  메시지  처리  구현
HBRUSH  CControlColorDlg::OnCtlColor(CDC*  pDC,  CWnd*  pWnd,  UINT  nCtlColor) 
{
   HBRUSH  hbr  =  CDialog::OnCtlColor(pDC,  pWnd,  nCtlColor);
  
   //  TODO:  Change  any  attributes  of  the  DC  here
   if(m_ctrlEdit.m_hWnd  ==  pWnd->m_hWnd)
   {
      pDC->SetTextColor(RGB(0,  0,  255));
      pDC->SetBkColor(RGB(255,  255,  0));

      return  hbr;
   }

   if(nCtlColor  ==  CTLCOLOR_STATIC)
   {
      pDC->SetTextColor(RGB(0,  255,  0));
      pDC->SetBkColor(TRANSPARENT);
      return  m_brush;
   }
   //  TODO:  Return  a  different  brush  if  the  default  is  not  desired
   return  CDialog::OnCtlColor(pDC,  pWnd,  nCtlColor);
}

반응형

댓글