我的VC——对话框背景色及背景图片

MFC界面编程无非不是根据已有类函数对控件进行设置,就是重载类函数重绘控件,达到自己想要的效。思路是很简单,但是实际操作起来就。。。。。

之前用了SkinPPWTL.dll来加载皮肤完成了界面的美化,使用起来很简单,导入库函数,加载DLL,在APP文件InitInstance()里面初始化,加载皮肤,最后在ExitInstance() 释放变量即可。虽然可用的皮肤很少,但是比起系统默认的界面要好很多。在后来发现对话框上的右键很容易引起系统崩溃。。。。只好放弃,开始自己的MFC界面编程之旅。

1.对话框背景色:

设置对话框背景色最好是在app类中进行,这样整个程序的对话框的背景色就会是统一的。在app类的InitInstance()函数的开始就this->SetDialogBkColor(RGB(236,236,234) ,RGB(0, 0, 0));前一个RGB设置的是背景的颜色,后面那个设置的是字体的颜色,个人认为最好的背景色就是白色,白色百搭啊。设置好运行程序发现static控件颜色还是原来的,这样显得很难看,我们在dlg类中设置一个画刷m_brush.CreateSolidBrush( RGB(236, 236,234));重载ON_WM_CTLCOLOR来重绘,在函数体里面HBRUSH CXXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
  if(   nCtlColor   ==   CTLCOLOR_BTN  )  
  return   m_brush;
 if(   nCtlColor   ==   CTLCOLOR_STATIC   )  
  return   m_brush;  
   if(nCtlColor==CTLCOLOR_LISTBOX)
   {
    pDC->SetBkMode(TRANSPARENT);
    return   m_brush;
    }
 return hbr;
}不过貌似对我在子对话框中的listbox没有起作用,我只好在有listbox的那个类又重载了ON_WM_CTLCOLOR。呵呵。这样整体的背景都统一了,除了messagebox(),这个需要我们重新写一个对话框来实现messagebox的功能。

2.背景图片

用图片和用颜色的差别只有你要先导入背景图片,然后设置画刷,在ON_WM_CTLCOLOR里面重绘就可以了。在初始化函数OnInitDialog()里面

m_bitmap.LoadBitmap(IDB_MAIN1);//CBitmap m_bitmap;
m_brush.CreatePatternBrush(&m_bitmap);//CBrush  m_brush;

ON_WM_CTLCOLOR里面的内容和画背景色的内容一样。这样子就需要专业的美工设置一下界面的整体格局了。

3.对话框边框

光是一个背景色或者背景图片远远达不到界面美化的效果,我们要把整个对话框的架子换了,脱胎换骨。当然我们可以在对话框的属性上做点小手脚,把对话框设置成无边框模式,这样我们自己做一个背景图片,再在上面加标题栏图片,关闭图片,最小化图片等等。

突然想到一个要修改的地方,明天继续。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值