滑動條是一種互動、直觀的控制項。它包括一個沿著控制項長度滑動的滑動框和用於顯示值範圍的可選刻度標誌。滑動條控制項還有一個內建的鍵盤介面,所以可用鍵盤上的方向鍵來移動滑塊。
MFC類使用CSliderCtrl類來提供滑動條的各項服務。我們同樣可以做一個對話方塊,上面放置紅色綠色和藍色共三個滑動條控制項,通過顏色配比來實現地區顏色顯示。過程如下:
(1)建立一個對話方塊工程SliderCtrl,放置三個滑動條控制項IDC_SLIDER_RED、IDC_SLIDER_GREEN、IDC_SLIDER_BLUE。在CCSliderCtrlDlg的初始化函數中對這三個控制項初始化執行。
//紅色
CSliderCtrl *pSliderRed = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_RED);
pSliderRed->SetRange(0,255); //紅色滑動條範圍
pSliderRed->SetPos(128); //預設
//綠色
CSliderCtrl *pSliderGreen = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_GREEN);
pSliderGreen->SetRange(0,255); //綠色滑動條範圍
pSliderGreen->SetPos(128);
//藍色
CSliderCtrl *pSliderBlue = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_BLUE);
pSliderBlue->SetRange(0,255); //藍色滑動條範圍
pSliderBlue->SetPos(128);
(2)為CSliderCtrl類添加WM_HSCROLL訊息處理方法,在對話方塊上點擊右鍵insert event handler,然後編輯滑動事件處理函數即可。
void CCSliderCtrlDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int iRed,iGreen,iBlue;
if((pScrollBar->GetDlgCtrlID() == IDC_SLIDER_RED)
||(pScrollBar->GetDlgCtrlID() == IDC_SLIDER_GREEN)
||(pScrollBar->GetDlgCtrlID() == IDC_SLIDER_BLUE))
{
CSliderCtrl *pSliderRed = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_RED);
CSliderCtrl *pSliderGreen = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_GREEN);
CSliderCtrl *pSliderBlue = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_BLUE);
iRed = pSliderRed->GetPos();
iGreen = pSliderGreen->GetPos();
iBlue = pSliderBlue->GetPos();
}
UpdateData(TRUE);
CBrush colorBrush; //畫刷的使用
COLORREF clRGB;
clRGB = RGB(iRed,iGreen,iBlue);
CClientDC *pClientDC;
pClientDC = new CClientDC(this);
colorBrush.CreateSolidBrush(clRGB);
CRect rect(80,120,160,200);
pClientDC->FillRect(rect,&colorBrush);
delete pClientDC;
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}