对话框控件背景的修改

修改对话框的一些控件背景,是一些朋友经常遇到的问题.

1.这里将控件类化,在OnDraw函数中对控件背景进行修改.

2.如果是修改控件背景颜色是一件稍微比较容易点.只要在OnCtlColor这个函数修改外观.这个函数返回一个CBush.所以要在CXXDialog中CBush m_brush.

m_brush.CreateSockBrush();

 

然后直接

HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
 // TODO: Change any attributes of the DC here
 
 // TODO: Return a different brush if the default is not desired
 if(pWnd->GetDlgCtrlID()==IDC_LINE_STYLE)
 {
  pDC->SetTextColor(RGB(255,0,0));
  pDC->SetBkMode(TRANSPARENT);
  return m_brush;
 }
 if(pWnd->GetDlgCtrlID()==IDC_LINE_WIDTH)
 {
  pDC->SetTextColor(RGB(255,0,0));
  pDC->SetBkMode(TRANSPARENT);
//  pDC->SetBkColor(RGB(0,0,255));
  return m_brush;
 } 
 if(pWnd->GetDlgCtrlID()==IDC_TEXT)
 {
  pDC->SelectObject(&m_font);
 }

 if(pWnd->GetDlgCtrlID()==IDOK)
 {
  pDC->SetTextColor(RGB(255,0,0));
  return m_brush;
 }


 return hbr;
}

3.如果要修改控件的背景为一张照片,还要用到OnEraseBkgnd(CDC* pDC)

在这个函数里面,在控件区域画图片.然后在OnCtrlColor

HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

 // TODO:  在此更改 DC 的任何属性
 if(pWnd->GetDlgCtrlID()==IDC_XXX)
 {
  pDC->SetBkMode(TRANSPARENT);
  return (HBRUSH)::GetStockObject(NULL_BRUSH);
 }
 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
 return hbr;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值