dcsimg

RGB Preview Dialog

WEBINAR:
On-Demand

Desktop-as-a-Service Designed for Any Cloud ? Nutanix Frame


This application shows a COLORREF structure that use Slider Control to determinates your 24-bit RGB color and shows also simple way to communicate between CSliderCtrl, CEdit, and CStatic.

void CRGBDlg::OnVScroll( UINT nSBCode, 
                         UINT nPos, 
                         CScrollBar* pScrollBar) 
{
  CSliderCtrl* pSlider = (CSliderCtrl*) pScrollBar;
  CString szColorValue;
  int i = pSlider->GetDlgCtrlID () - IDC_SLIDER1;

  // Now, nColor = current SliderPosValue
  nColor[i] = pSlider->GetPos();
  szColorValue.Format("%d", nColor[i]);

  SetDlgItemText(i + IDC_EDIT1, szColorValue);
  
  // Get a pointer to the static window.
  CStatic* pStatic = &m_ctlPaintStatic;
  pStatic->UpdateWindow();
  pStatic->Invalidate();
    
  CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

// PaintST.cpp : implementation file
//

void CPaintST::OnPaint() 
{
  CPaintDC dc(this); // device context for painting
  
  CBrush*  pOldBrush;
  GetClientRect(rcStatic);

  CBrush  brBack(m_crBkColor);
  dc.FillRect(rcStatic, &brBack);
  pOldBrush = dc.SelectObject(&brBack);
  dc.SelectObject(pOldBrush);
  
    
  // Do not call CStatic::OnPaint() for painting messages
}

BOOL CPaintST::OnEraseBkgnd(CDC* pDC) 
{
  CBrush  brBackgnd;

  // Get a pointer to the parent window
  CRGBDlg* pColorDlg = (CRGBDlg*) GetParent();
  ASSERT(pColorDlg != NULL);  


  // Get new color value from SliderCtrl.
  m_crBkColor = RGB ((BYTE) pColorDlg->nColor[0],
      (BYTE) pColorDlg->nColor[1],
      (BYTE) pColorDlg->nColor[2]);

  GetClientRect(rcStatic);
  brBackgnd.CreateSolidBrush(m_crBkColor);
  pDC->FillRect(rcStatic, &brBackgnd);
  
  return CStatic::OnEraseBkgnd(pDC);
}

Downloads

Download demo project - 40 Kb


This article was originally published on March 6th, 2002

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date