vc6.0 mfcMFC中怎样给对话框添加背景图片?

2162人阅读
黄基前(广西桂林)---- 笔者曾在《软件报》2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问:一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以由几种不同的方法来实现,具体如下(粗斜体代码为增添的): ---- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 ---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下: ---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。 ---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码: BOOL CExampleDlgApp: : InitInstance ( ){ …&&&&CExampleDlgD&&&&m_pMainWnd = &//先于DoModal()调用,将对话框设置为蓝色背景、红色文本&&&&SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));&&&&int nResponse = dlg.DoModal();…}---- 编译并运行,此时对话框的背景色和文本色已发生了改变。值得注意的是:在调用DoModal()之前必须先调用SetDialogBkColor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对话框。 ---- 方法二:重载OnPaint(),即WM_PAINT消息。有关代码如下(以上例工程为准): void CExampleDlgDlg::OnPaint() {&&&&if (IsIconic())…&
{&&&&&&&&CR&&&&&&&&CPaintDC dc(this);&&&&&&&&GetClientRect(rect);&&&&&&&&dc.FillSolidRect(rect,RGB(0,255,0));& //设置为绿色背景&&&&&&&&CDialog::OnPaint();&
}---- 方法三:重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准): ---- ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog{...protected: CBrush m_ ...};---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::OnInitDialog() { ...// TODO: Add extra initialization here m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子
...} ---- ③利用ClassWizard重载OnCtlColor(…),即WM_CTLCOLOR消息: HBRUSH CExampleDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {/*** 这里不必编写任何代码!**下行代码要注释掉** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);*/return m_&
//返加绿色刷子}---- 方法四:还是重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准): ---- 步骤①、②同上方法三中的步骤①、②。 ---- 步骤③利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息)时则有些不同: HBRUSH CExampleDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);//在这加一条是否为对话框的判断语句 if(nCtlColor ==CTLCOLOR_DLG)return m_&
//返加绿色刷子}---- 编译并运行即可。 ---- 关于如何改变对话框背景颜色的问题,可能还有很多种不同方法可以实现,笔者在这仅举出四种常见的方法。其中方法三的编程似乎有点不太规范,方法四则要比方法三正统些,笔者这样的对比举例是为了拓宽VC编程爱好者特别是初学者的编程思路,读者可以根据实际情况选用其中的一种。如果再结合《软件报》2000年第5期中改变对话框上的控件颜色,相信会使您的MFC应用程序&增色&不少。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:18907次
排名:千里之外
原创:13篇此文系转载,忘了博客地址了VC++中如何给对话框加背景图片( 16:57:59)
1、声明成员变量CBrush m_2、在InitDialog中添加代码:
bmp.LoadBitmap(IDB_BITMAP1);
//IDB_BITMAP1是图片资源ID
m_brush.CreatePatternBrush(&bmp);
3、重载对话框的OnCtlColor,改最后的返回值:
return (HBRUSH)m_
把下面这段代码加进OnPaint()里就行了
CPaintDC dc(this);
bitmap.LoadBitmap(IDB_BITMAP1);
//这个IDB_BITMAP1要自己添加
brush.CreatePatternBrush(&bitmap);
dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);
// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
方法三:使用StretchBlt()函数,具有图像自适应窗体功能
CPaintDC dc(this);
bitmap.LoadBitmap(IDB_BITMAP1);
//这个IDB_BITMAP1要自己添加
brush.CreatePatternBrush(&bitmap);
dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);
// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
阅读(...) 评论()dialog-background-picture VC6.0 MFC 基于对话框应用程序的开发, 背景图片的加载 _Window 窗口 238万源代码下载-
&文件名称: dialog-background-picture
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 2104 KB
&&上传时间:
&&下载次数: 1
&&提 供 者:
&详细说明:VC6.0 MFC 基于对话框应用程序的开发,对话框背景图片的加载-VC6.0 MFC ,dialog s background picture
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&dialog background picture\Laser\Laser.aps&&.........................\.....\Laser.clw&&.........................\.....\Laser.cpp&&.........................\.....\Laser.dsp&&.........................\.....\Laser.dsw&&.........................\.....\Laser.h&&.........................\.....\Laser.ncb&&.........................\.....\Laser.opt&&.........................\.....\Laser.plg&&.........................\.....\Laser.rc&&.........................\.....\LaserDlg.cpp&&.........................\.....\LaserDlg.h&&.........................\.....\ReadMe.txt&&.........................\.....\res\1.bmp&&.........................\.....\...\Laser.ico&&.........................\.....\...\Laser.rc2&&.........................\.....\resource.h&&.........................\.....\StdAfx.cpp&&.........................\.....\StdAfx.h&&.........................\如何给MFC对话框添加背景图片.docx&&.........................\Laser\res&&.........................\Laser&&dialog background picture
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 美化MFC的界面,VC6.0和VC2008等都可以用的,加上之后,是你的对话框,窗口更加美。怎么给MFC的对话框加背景图片_百度知道
怎么给MFC的对话框加背景图片
我说的是对话框,不是单文档程序,单文档程序的背景已经加好了,现在怎么加对话框的背景俯弗碘煌鄢号碉铜冬扩?求高人指点,网上的那些就用说了,我都看过了
这个我会添加,主要是点击确定以后弹出的下面这个对话框怎么添加背景,谁能教教我呀!
提问者采纳
1、把你的图包含到程序的“Bitmap资源”里,提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以&&2、定位到&&void&CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码&&&&&else&&&&&{&&&&&&&&&&&&&//CDialog::OnPaint();//要禁止这个调用&&&&&&&&&&&&&CPaintDC&&&dc(this);&&&&&&&&&&&&&CRect&&&&&&&&&&&&&&&&GetClientRect(&rect);&&&&&&&&&&&&&CDC&&&dcM&&&&&&&&&&&&&dcMem.CreateCompatibleDC俯弗碘煌鄢号碉铜冬扩(&dc);&&&&&&&&&&&&&CBitmap&&&bmpB&&&&&&&&&&&&&bmpBackground.LoadBitmap(IDB_BITMAP);&&&&&&&&&&&&&&&&&&&&&//IDB_BITMAP是你自己的图对应的ID&&&&&&&&&&&&&BITMAP&&&&&&&&&&&&&&&&bmpBackground.GetBitmap(&bitmap);&&&&&&&&&&&&&CBitmap&&&*pbmpOld=dcMem.SelectObject(&bmpBackground);&&&&&&&&&&&&&dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,&&&&&&&&&&&&bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);&&&&&}
提问者评价
来自团队:
其他类似问题
12人觉得有用
为您推荐:
背景图片的相关知识
其他1条回答
弹出的下面这个对话添加的方法是一样的。
但是弹出的这个对话框里没有On_paint()呀。。应该把那些代码加在哪呢?我都试过了都没有显示呀。。
你可以为后面弹出的对话框定义一个类,这个类里面就有On_paint()函数。然后在On_paint()函数里添加添加背景图的代码。要注意,后面弹出的对话框一定要用这个类来声明。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁7613人阅读
1、添加背景图片到“Bitmap”资源里。方法为“插入——资源”,如果还没有Bitmap,则新建一个Bitmap,否则选择资源
&&&&&& 类型为“Bitmap”后“引入”想要插入的背景图片,我加入的背景图片如图1,加入过程如图2。&&
图2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
说明:引入的图片可以插入256色、16位色或更高色的图片,若是其他格式图片可用PS打开再另存为BMP、24位windows格式就可
&&&&&&&&&&&&&&&&&&&& 以了。提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以了,没有影响的。&
2、定位到&& void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码:
&& else&&&
&&&&&&&&&& //CDialog::OnPaint();//要禁止这个调用&&&
&&&&&&&&&& CPaintDC&& dc(this);&&&
&&&&&&&&&& CRect&&&&&
&&&&&&&&&& GetClientRect(&rect);&&&
&&&&&&&&&& CDC&& dcM&&&
&&&&&&&&&& dcMem.CreateCompatibleDC(&dc);&&&
&&&&&&&&&& CBitmap&& bmpB&&&
&&&&&&&&&& bmpBackground.LoadBitmap(IDB_BITMAP);&& //IDB_BITMAP是你自己的图对应的ID&& ,由于我刚刚加入的位图资源&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //被我命名成了IDB_Bg,因而我这句就是bmpBackground.LoadBitmap(IDB_Bg);&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&& BITMAP&&&&&
&&&&&&&&&& bmpBackground.GetBitmap(&bitmap);&&&
&&&&&&&&&& CBitmap&& *pbmpOld=dcMem.SelectObject(&bmpBackground);&&&
&&&&&&&&&& dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,&&&
&&&&&&&& bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);&&&
3、编译运行结果如图3。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图3&&4、通过属性设置把边框隐藏起来并更改对话框的大小结果更好一点,如图4。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154227次
积分:1805
积分:1805
排名:第15415名
原创:21篇
转载:78篇
评论:21条
(1)(1)(3)(1)(2)(1)(2)(1)(4)(3)(2)(5)(3)(38)(32)

我要回帖

更多关于 vc6.0mfc添加按钮 的文章

 

随机推荐