先创建一个对话框,三个滑块,三个编辑框,并且添加关联变量。
分别为:
DDX_Control(pDX, IDC_GSCROLLBAR, m_Green_ScrollBar);
DDX_Control(pDX, IDC_RSCROLLBAR, m_Red_Scrollbar);
DDX_Control(pDX, IDC_BSCROLLBAR, m_Blue_Scrollbar);
DDX_Control(pDX, IDC_EDITB, m_EditB);
DDX_Control(pDX, IDC_EDITG, m_EditG);
DDX_Control(pDX, IDC_EDITR, m_EditR);
然后添加初始化代码。
如下:
//Initial Code 初始化代码
//管理红色滑块初始化
m_Red_Scrollbar.SetScrollRange(0,255); //设置滑块范围
m_Red_Scrollbar.SetScrollPos(100); //设置滑块初始位置
char iPos[10]; //定义一个数组,用于存储数字向字符串转化的字符
itoa(m_Red_Scrollbar.GetScrollPos(),iPos,10); //将整数转化为字符串存储在iPos数组中,此处iPos为指针指向数组开始
m_EditR.SetSel(0,-1); //选中编辑框中所有字符
m_EditR.ReplaceSel(iPos); //用字符串iPos中字符替换编辑框中内容
//绿色初始化
m_Green_ScrollBar.SetScrollRange(0,255);
m_Green_ScrollBar.SetScrollPos(100);
char iPos1[10];
itoa(m_Green_ScrollBar.GetScrollPos(),iPos1,10);
m_EditG.SetWindowText(iPos1); //将iPos显示到编辑框中
//蓝色初始化
m_Blue_Scrollbar.SetScrollRange(0,255);
m_Blue_Scrollbar.SetScrollPos(100);
char iPos2[10];
itoa(m_Blue_Scrollbar.GetScrollPos(),iPos2,10);
m_EditB.SetWindowText(iPos2); //将iPos显示到编辑框中
UpdateData(FALSE); //更新编辑框
然后添加滑块的消息处理函数,并添加代码:
void CScrollColourDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) //滑块的消息处理
{
// TODO: Add your message handler code here and/or call default
char iPos[10]; //定义一个数组,用于存储数字向字符串转化的字符
int iNowPos; //当前位置
if(pScrollBar==&m_Red_Scrollbar)
switch(nSBCode)
{
case SB_THUMBTRACK: //拖动滑块消息
m_Red_Scrollbar.SetScrollPos(nPos); //设置滑块位置
itoa(m_Red_Scrollbar.GetScrollPos(),iPos,10); //将整数转化为字符串存储在iPos数组中,此处iPos为指针指向数组开始
m_EditR.SetSel(0,-1); //选中编辑框中所有字符
m_EditR.ReplaceSel(iPos); //用字符串iPos中字符替换编辑框中内容
break;
case SB_LINEDOWN: //点击向下箭头消息
iNowPos=m_Red_Scrollbar.GetScrollPos();
iNowPos=iNowPos+1;
if(iNowPos>255)
iNowPos=255;
m_Red_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Red_Scrollbar.GetScrollPos(),iPos,10);
m_EditR.SetSel(0,-1);
m_EditR.ReplaceSel(iPos);
break;
case SB_LINEUP: //点击向上箭头消息
iNowPos=m_Red_Scrollbar.GetScrollPos();
iNowPos=iNowPos-1;
if(iNowPos<0)
iNowPos=0;
m_Red_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Red_Scrollbar.GetScrollPos(),iPos,10);
m_EditR.SetSel(0,-1);
m_EditR.ReplaceSel(iPos);
break;
case SB_PAGEDOWN: //点击上面空白处,即上翻页
iNowPos=m_Red_Scrollbar.GetScrollPos();
iNowPos=iNowPos+3;
if(iNowPos>255)
iNowPos=255;
m_Red_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Red_Scrollbar.GetScrollPos(),iPos,10);
m_EditR.SetSel(0,-1);
m_EditR.ReplaceSel(iPos);
break;
case SB_PAGEUP: //点击下面空白处,即下翻页
iNowPos=m_Red_Scrollbar.GetScrollPos();
iNowPos=iNowPos-3;
if(iNowPos<0)
iNowPos=0;
m_Red_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Red_Scrollbar.GetScrollPos(),iPos,10);
m_EditR.SetSel(0,-1);
m_EditR.ReplaceSel(iPos);
break;
default:
break;
}
if(pScrollBar==&m_Green_ScrollBar)
switch(nSBCode)
{
case SB_THUMBTRACK: //拖动滑块消息
m_Green_ScrollBar.SetScrollPos(nPos); //设置滑块位置
itoa(m_Green_ScrollBar.GetScrollPos(),iPos,10); //将整数转化为字符串存储在iPos数组中,此处iPos为指针指向数组开始
m_EditG.SetSel(0,-1); //选中编辑框中所有字符
m_EditG.ReplaceSel(iPos); //用字符串iPos中字符替换编辑框中内容
break;
case SB_LINEDOWN: //点击向下箭头消息
iNowPos=m_Green_ScrollBar.GetScrollPos();
iNowPos=iNowPos+1;
if(iNowPos>255)
iNowPos=255;
m_Green_ScrollBar.SetScrollPos(iNowPos);
itoa(m_Green_ScrollBar.GetScrollPos(),iPos,10);
m_EditG.SetSel(0,-1);
m_EditG.ReplaceSel(iPos);
break;
case SB_LINEUP: //点击向上箭头消息
iNowPos=m_Green_ScrollBar.GetScrollPos();
iNowPos=iNowPos-1;
if(iNowPos<0)
iNowPos=0;
m_Green_ScrollBar.SetScrollPos(iNowPos);
itoa(m_Green_ScrollBar.GetScrollPos(),iPos,10);
m_EditG.SetSel(0,-1);
m_EditG.ReplaceSel(iPos);
break;
case SB_PAGEDOWN: //点击上面空白处,即上翻页
iNowPos=m_Green_ScrollBar.GetScrollPos();
iNowPos=iNowPos+3;
if(iNowPos>255)
iNowPos=255;
m_Green_ScrollBar.SetScrollPos(iNowPos);
itoa(m_Green_ScrollBar.GetScrollPos(),iPos,10);
m_EditG.SetSel(0,-1);
m_EditG.ReplaceSel(iPos);
break;
case SB_PAGEUP: //点击下面空白处,即下翻页
iNowPos=m_Green_ScrollBar.GetScrollPos();
iNowPos=iNowPos-3;
if(iNowPos<0)
iNowPos=0;
m_Green_ScrollBar.SetScrollPos(iNowPos);
itoa(m_Green_ScrollBar.GetScrollPos(),iPos,10);
m_EditG.SetSel(0,-1);
m_EditG.ReplaceSel(iPos);
break;
default:
break;
}
if(pScrollBar==&m_Blue_Scrollbar)
switch(nSBCode)
{
case SB_THUMBTRACK: //拖动滑块消息
m_Blue_Scrollbar.SetScrollPos(nPos); //设置滑块位置
itoa(m_Blue_Scrollbar.GetScrollPos(),iPos,10); //将整数转化为字符串存储在iPos数组中,此处iPos为指针指向数组开始
m_EditB.SetSel(0,-1); //选中编辑框中所有字符
m_EditB.ReplaceSel(iPos); //用字符串iPos中字符替换编辑框中内容
break;
case SB_LINEDOWN: //点击向下箭头消息
iNowPos=m_Blue_Scrollbar.GetScrollPos();
iNowPos=iNowPos+1;
if(iNowPos>255)
iNowPos=255;
m_Blue_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Blue_Scrollbar.GetScrollPos(),iPos,10);
m_EditB.SetSel(0,-1);
m_EditB.ReplaceSel(iPos);
break;
case SB_LINEUP: //点击向上箭头消息
iNowPos=m_Blue_Scrollbar.GetScrollPos();
iNowPos=iNowPos-1;
if(iNowPos<0)
iNowPos=0;
m_Blue_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Blue_Scrollbar.GetScrollPos(),iPos,10);
m_EditB.SetSel(0,-1);
m_EditB.ReplaceSel(iPos);
break;
case SB_PAGEDOWN: //点击上面空白处,即上翻页
iNowPos=m_Blue_Scrollbar.GetScrollPos();
iNowPos=iNowPos+3;
if(iNowPos>255)
iNowPos=255;
m_Blue_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Blue_Scrollbar.GetScrollPos(),iPos,10);
m_EditB.SetSel(0,-1);
m_EditB.ReplaceSel(iPos);
break;
case SB_PAGEUP: //点击下面空白处,即下翻页
iNowPos=m_Blue_Scrollbar.GetScrollPos();
iNowPos=iNowPos-3;
if(iNowPos<0)
iNowPos=0;
m_Blue_Scrollbar.SetScrollPos(iNowPos);
itoa(m_Blue_Scrollbar.GetScrollPos(),iPos,10);
m_EditB.SetSel(0,-1);
m_EditB.ReplaceSel(iPos);
break;
default:
break;
}
UpdateData(FALSE); //更新编辑框
//画图代码
CString sR,sG,sB; //字符串用来存放编辑框中的数值
int nR,nG,nB; //存放编辑框中的字符串所转化成的整形数据
m_EditR.GetWindowText(sR); //获取红色
m_EditG.GetWindowText(sG); //获取绿色
m_EditB.GetWindowText(sB); //获取蓝色
nR=atoi(sR); //将红色字符串转化为整形数值
nG=atoi(sG); //将绿色字符串转化为整形数值
nB=atoi(sB); //将蓝色字符串转化为整形数值
CDC *pDC=GetDC(); //定义一个DC的指针,并获取当前设备环境DC的指针
CBrush NewBrush; //定义一个新的画刷
CPen NewPen; //画笔
NewBrush.CreateSolidBrush(RGB(nR,nG,nB)); //创建一个画刷
NewPen.CreatePen(PS_SOLID,1,RGB(nR,nG,nB)); //创建一个画笔,标准,大小为1
pDC->SelectObject(&NewBrush); //将新创建的画刷选入到当前的设备描述表中
pDC->SelectObject(&NewPen); //将新创建的画笔选入到当前的设备描述表中
pDC->Rectangle(35,45,270,230); //画一个矩形
ReleaseDC(pDC); //释放DC,删除DC
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
//nSBCode表示滚动条发生事件标号消息,nPos表示滚动条位置,pScrollBar表示是哪一个滚动条
}