滑动条和Combobox的使用――实例:调色板!

1。新建一个基于对话框的工程.
在对话框上添加三个滑动条控件,分别对应:红,绿,蓝。分别设置其ID,IDC_SLIDER_COLOR,IDC_SLIDER_COLOR2,IDC_SLIDER_COLOR3;
另外添加三个对应的CSliderCtrl型变量,m_Slider,m_Sliderb,m_Sliderg;
再添加三个编辑框控件,分别对应红,绿,蓝,用于显示颜色值。分别添加三个int型变量为m_red,m_blue,m_green.
再添加两个按钮控件,一个用于显示颜色,属性设置“所有者绘制”;另一个按钮IDC_BUTTON_APPLY用于响应。
2。在对话框类中添加消息处理WM_DRAWITEM,在消息函数中OnDrawItem()添加代码:
UpdateData();
COLORREF clrButn;
clrButn=RGB(m_red,m_blue,m_green);
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
if(nIDCtl==IDC_BUTNDRAW)
{
    CWnd *pWndButn=GetDlgItem(IDC_BUTNDRAW);
    CRect rectButn;
    pWndButn->GetClientRect(&rectButn);
    dc.FillSolidRect(&rectButn,clrButn);
}
dc.Detach();
运行,显示颜色按钮可以显示出颜色,此时为黑色。
3.在OnInitDialog()中初始化滑动条变量:
m_Slider.SetRange(0,255); //设置滑动条的数值范围为0~255。
m_Sliderb.SetRange(0,255);
m_Sliderg.SetRange(0,255);
4。为三个滑动条添加消息处理函数。
在滑动条上右键,选择“事件”,在新建Windows消息/事件中双击NM_CUSTOMDRAW,编辑代码:
UpdateData(TRUE);
m_red=m_Slider.GetPos();
UpdateData(FALSE);
CWnd*pWndButn=GetDlgItem(IDC_BUTNDRAW);
pWndButn->Invalidate();
pWndButn->UpdateWindow();
运行,拖动控件红色的滑动条,颜色即可改变。
继续添加其余两个滑动条的消息处理,这里我们可以把这三个消息响应到一个处理函数中。修改消息映射表中
//{{AFX_MSG_MAP(CDrawbutnDlg)
……
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_COLOR,OnCustomdrawSliderColor)
//}}AFX_MSG_MAP
为: ON_NOTIFY_RANGE(NM_CUSTOMDRAW, IDC_SLIDER_COLOR,IDC_SLIDER_COLOR3, OnCustomdrawSliderColor)
并在处理函数m_red=m_Slider.GetPos();后添加两句:
m_blue=m_Sliderb.GetPos();
m_green=m_Sliderg.GetPos();
注意:不能不通过[事件|新建Windows消息/事件中|NM_CUSTOMDRAW]而直接在消息映射表中直接添加映射内容,否则会出错。
5。运行,现在拖动滑动条,颜色即可变化。下面要实现在编辑框控件中输入值,颜色也相应变化。
为按钮IDC_BUTTON_APPLY添加消息处理函数OnButtonApply();添加代码:
UpdateData();
m_Slider.SetPos(m_red);
m_Sliderb.SetPos(m_blue);
m_Sliderg.SetPos(m_green);
CWnd*pWndButn=GetDlgItem(IDC_BUTNDRAW);
pWndButn->Invalidate();
pWndButn->UpdateWindow();
7。运行,不论在编辑框中输入值,还是拖动滑动条,颜色都会相应变化,与windows中设置颜色对话框很相似.
 
来自: http://hi.baidu.com/yubao08/blog/item/faa26d135ce3340a5baf5361.html
 
8.增加一个combobox的控件,在属性里增加下拉内容。VC下是要Ctrl+回车来换行输入多个内容,VS中则是用分号隔开。添加ComboBox变量,响应OnSelchange函数,函数内添加代码如下:
  UpdateData();
  int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_COLOR))->GetCurSel();//当前选中的行。
     
  switch(iPos)
  {
       case 0:                                         //从0开始
         m_red=255;
         m_green=0;
         m_blue=0;
         break;
       case 1:
         m_red=0;
         m_green=255;
         m_blue=0;
         break;
       case 2:
         m_red=0;
         m_green=0;
         m_blue=255;
         break;
       default:
         break;
  }
   
  m_Slider.SetPos(m_red);
  m_Sliderb.SetPos(m_blue);
  m_Sliderg.SetPos(m_green);
 
  CWnd*pWndButn=GetDlgItem(IDC_BUTNDRAW);
  pWndButn->Invalidate();
  pWndButn->UpdateWindow(); 
 
个人总结:滑动条的使用 1 建立CSliderCtrl型变量
                                             2 初始化 m_Slider.SetRange(0,255); //设置滑动条的数值范围为0~255。
                        3 获取位置 m_red=m_Slider.GetPos();
           Combobox的使用 1 添加下拉内容
                          2 获取点击的行数 GetCurSel
                          3 命令响应   OnSelchange
就这么几步 很简单。拷过去的代码可直接使用于windows mobile。

你可能感兴趣的:(职场,休闲,滑动条)