您的位置:首页 > 其它

颜色对话框、背景色的设定

2016-07-04 10:35 169 查看
颜色对话框看起来复杂,实现起来没有那么复杂。CColorDialog  类

1.

CColorDialog dlg;

 dlg.DoModal();

这样就创建好了一个颜色对话框了,下面怎么将颜色对话框的值传递到view类中,并且显示。m_CC

2.CColorDialog dlg;

 if(IDOK==dlg.DoModal())

 {

  m_color=dlg.m_cc.rgbResult;

 }

对于要保存上次操作这里要用到dlg.m_cc.RGBININT;出现报错,非法操作。或上dlg.m_cc.RGBININT;

2.对于字体的编辑还要用到CFontDialog;其实和颜色对话框很相似。m_cf.

释放字体资源,DeleteObject

3.invalidate的用法。

 UpdateData();  //这个函数很好,为了每次改变空间上面的值对应的变量也会改变。

 CPaintDC dc(this); // device context for painting

 CPen pen(m_linesty,m_lineWth,RGB(255,0,0));

 dc.SelectObject(&pen);

 CRect rect;

 GetDlgItem(IDC_SAMPLE)->GetWindowRect(&rect);//得到屏幕大小坐标

 ScreenToClient(rect);//转化为当前屏幕坐标

 dc.MoveTo(rect.left+20,rect.top+rect.Height()/2);

 dc.LineTo(rect.right-20,rect.top+rect.Height()/2);

 // TODO: 在此处添加消息处理程序代码

 // 不为绘图消息调用 CDialog::OnPaint()

4.改变对话框背景色    WM_CTLCOLOR响应函数 OnCtlColor。

精确到某一个控件的背景色用GetDlgCtrlld

还可以改变文字颜色

pDC->SetTextColor(RGB(255,0,0))

HBRUSH CSettingDig::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

 if (pWnd->GetDlgCtrlID()==IDC_GROUP1)

 {

  pDC->SetTextColor(RGB(255,0,0));//设置文本颜色

  pDC->SetBkMode(TRANSPARENT);

  return m_brush;

 }

 if (pWnd->GetDlgCtrlID()==zc)

 {

  pDC->SetTextColor(RGB(0,0,255));//设置文本颜色

  pDC->SetBkMode(TRANSPARENT);

  return m_brush;

 }

 // TODO:  在此更改 DC 的任何属性

 // TODO:  如果默认的不是所需画笔,则返回另一个画笔

 return hbr;

}



5.对于绘制按钮来说,要改变其背景色和字体颜色要重新一个类,再累中重新定义虚函数,将代码拷贝过来。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  背景色