mfc程序背景图片

本文详细介绍了如何在MFC程序中设置对话框的背景图片,通过CBitmap和CBrush类加载图片并创建模式画刷,然后在OnInitDialog()中初始化,并重载OnCtlColor()函数处理WM_CTLCOLOR消息,实现背景图片的显示。同时,文章讨论了在OnPaint()中设置背景图片的方法以及在文档视图结构中改变视图背景颜色的问题,提出了在WM_ERASEBKGND消息映射函数中设置背景色以避免闪烁的解决方案。
摘要由CSDN通过智能技术生成

先载入一张图片,ID为IDB_BITMAP2

 

TestDlg.h中:

CBrush m_brBk;//在public中定义

TestDlg.cpp中:

在初始化函数OnInitDialog()中加入:

BOOL CTestDlg::OnInitDialog()

{

CDialog::OnInitDialog();

CBitmap bmp;

bmp.LoadBitmap(IDB_BITMAP2);

m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject();

return TRUE; // return TRUE unless you set the focus to a control

}

 

再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),

添加如下:

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

{

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

 

if (pWnd == this)

{

return m_brBk;

}

return hbr;

}

 

按照上面的方法一路COPY下来运行,OK!并且由于图片是做为背景显示的,所以再添的按钮都能很好的显示出来,非常方便。

 

总结一下其中出现的变量和函数。

CBrush:类CBrush封装了Windows图形设备接口(GDI)中的画刷,画刷也就是采取什么方案填充图形的背景的工具。

OnInitDialog ( ):用于对对话框类的变量的初始化(注意:是在产生对话框之前就初始化),是WM_INITDIALOG消息产生的消

息处理函数,覆盖该函数可改变对话框初始设置。

用法:

virtual BOOL OnInitDialog();返回值指定对话框是否对它的一个控件设置输入焦点。如果OnInitDialog返回非零

值,Windows 将输入焦点设在对话框的第一个控件上,只有在对话框明确将输入焦点设在某控件上,应用返回0。

CBitmap:类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供操纵位图的成员函数。

LoadBitmap ( ):CBitmap类的一个成员函数,从应用的可执行文件中加载一个命名的位图资源来初始化位图对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值