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 paintingCBrush* 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);
}