现在的位置: 首页 > 综合 > 正文

滑块控制三种颜色并显示

2013年04月12日 ⁄ 综合 ⁄ 共 7012字 ⁄ 字号 评论关闭

先创建一个对话框,三个滑块,三个编辑框,并且添加关联变量。

分别为:

 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表示是哪一个滚动条
}

抱歉!评论已关闭.