欢迎来到天天文库
浏览记录
ID:14321875
大小:42.00 KB
页数:7页
时间:2018-07-27
《mfc中添加背景图片》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、方法一:1、声明成员变量CBrushm_brush;2、在InitDialog中添加代码:?CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP1);//IDB_BITMAP1是图片资源IDm_brush.CreatePatternBrush(&bmp);3、重载对话框的OnCtlColor,改最后的返回值:?1return(HBRUSH)m_brush;方法二:把下面这段代码加进OnPaint()里就行了?CPaintDCdc(this);CBitmapbitmap;bitmap.LoadBit
2、map(IDB_BITMAP1);//这个IDB_BITMAP1要自己添加CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,200,200);//这些参数可以调整图片添加位置和大小dc.SelectObject(pOldBrush);方法三:使用StretchBlt()函数,具有图像自适应窗体功能?CPaintDCdc(this);CBitmapbitmap;b
3、itmap.LoadBitmap(IDB_BITMAP1);//这个IDB_BITMAP1要自己添加CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);dc.Rectangle(0,0,200,200);//这些参数可以调整图片添加位置和大小dc.SelectObject(pOldBrush);问题 有的程序员希望在自己的应用程序中以有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框
4、中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。 许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用WindowsAPI函数来改变对话框的背景为某个位图呢?方法 改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。 当Windows准备改变对话框背景的颜色时,通常发送两个消息给对话框。第一个消息是WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框显示区域的任何显示。 第二个
5、消息是WM_CTLCOLOR,发送此消息给对话框或窗口来表示Windows需要知道对话框中控制的颜色。 在本节中,将重置对消息WM_ERASEBKGND的处理,以便将位图绘制在窗口的背景上。另外,将重置对消息WM_CTLCOLOR的处理,以避免对话框中的控制“剪补”位图。最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。步骤 按照下列步骤实现一个例子程序。运行此例子程序,选择菜单Dialog和菜单项BitmapBackground,将弹出一个对话框,显示背景位图和几个控制。 实现例子程序
6、的具体步骤如下: 1.在VisualC++中,利用AppWizard创建新的项目文件,并命名此项目文件为Ld145。 2.进入资源编辑器并创建新的对话框模板。在对话框中,添加几个静态文本域和编辑域,以及几个单选按钮和列表框。对话框的实际组成并不重要,只要能够覆盖部分位图就可以了。 3.选择ClassWizard,为刚创建的对话框模板创建对话框类,新类命名为CBitmaPBkgdDlg。 4.在资源编辑器中创建新的位图。 5.进入ClassWizard,从下拉列表中选择CBitmapBkgdDlg,从对象列表
7、中选择对象CBitmapBkgdDlg,从消息列表中选择消息WM_INITDIALOG,点击按钮AddFunction,在CBitmapBkgdDlg的方法OnInitDialog中添加下列代码:BOOLCBitmapBkgdDlg::OnInitDialog(){CBitmap*pBmpOld;RECTrectClient;VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH));VERIFY(m_Bitmap.LoadBitmap(IDB_BITMAP1));m_B
8、itmap.GetObject(sizeof(BITMAP),&m_bmInfo);GetClientRect(&rectClient);m_size.cx=rectClient.right;m_size.cy=rectClient.bottom;m_pt.x=rectClient.left;m_pt.y=rectClient.top;CCli
此文档下载收益归作者所有