VS2012
CBrush类
三种画刷-颜色画刷、阴影画刷、图案画刷
消息
WM_CTLCOLOR
1、对话框
2、代码
hpp protected: //定义画刷 CBrush m_brush; CBitmap m_bmp; cpp OnInitDialog()//对话框初始化 //先加载位图 m_bmp.LoadBitmap(IDB_BK); //对话框添加WM_CTLCOLOR消息 /* 绘制对话框和控件外观 */ HBRUSH CDemoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 if (m_brush.GetSafeHandle() && nCtlColor == CTLCOLOR_DLG)//如果是对话框就用新的画刷 return m_brush; else//如果是其他的就用原来的画刷 return hbr; } /* 获取下拉控件选择的值 */ void CDemoDlg::OnCbnSelchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 //如果有旧的画刷就删掉 if (m_brush.GetSafeHandle()) { m_brush.DeleteObject(); } switch (m_cmb_brush.GetCurSel()) { case 0: //创建颜色画刷 m_brush.CreateSolidBrush(RGB(200,200,255));//指定背景颜色 break; case 1: //创建阴影画刷 m_brush.CreateHatchBrush(HS_DIAGCROSS,RGB(255,0,0));//指定阴影样式和颜色 break; default: //创建位图画刷 m_brush.CreatePatternBrush(&m_bmp);//指定图片 break; } //失效擦除背景重画 Invalidate(TRUE); } Caesar卢尚宇 2021年1月16日
3、演示
Caesar卢尚宇
2021年1月16日