MFC对话框背景---图片背景---背景色

合集下载

MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结

MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结

MFC 颜色对话框字体对话框WM_CTLCOLOR消息总结1.颜色对话框CHOOSECOLOR 结构体来设置获取颜色对话框的相关信息成员变量m_ccm_cc.rgbResult 在IDOK之后保存的是选择的颜色RGB值COLORREF choose_color;CColorDialog dlg; //创建颜色对话框dlg.m_cc.Flags|=CC_RGBINIT ;//以用户选择的颜色进行初始化颜色打开对话框dlg.m_cc.Flags|=CC_FULLOPEN; //全部打开包括用户自定义dlg.m_cc.rgbResult=choose_color; //使用我们上次选择的颜色进行初始化if(IDOK==dlg.DoModal()) //创建模态对话框{choose_color=dlg.m_cc.rgbResult; //保存颜色选择颜色选择会反映到CHOOSECOLOR结构体中的regResult变量中}2. 字体对话框CFontDialogCHOOSEFONT 结构体保存字体设置LOGFONT 结构体间接创建字体DeleteObject 删除与windows GDI 相关的所有存储这是资源CGDIObject是GDI类判断类是否与某种资源相关联我们可以判断句柄CFont m_font; //定义CFont对象CString FontName; //字体名字CFontDialog dlg; //定义CFontDialog对象if(IDOK==dlg.DoModal()) //创建模态对话框{if(m_font.m_hObject) //判断句柄是否存在m_font.DeleteObject(); //相关资源m_font.CreateFontIndirect(dlg.m_cf.lpLogFont); //通过CHOOSEFON结构体的LOGFON 成员创建字体FontName=dlg.m_cf.lpLogFont->lfFaceName; //字体名字Invalidate(); //引起窗体无效重画进入OnDraw函数4. GetWindowRect 是获取到屏幕矩形区域的我们获取控件矩形要用GetClientRect 来获得SCreenToClient() 屏幕坐标转换到客户坐标ClientToSCreen() 客户坐标转换成屏幕坐标5.WM_CTLCOLOR 消息响应我们可以通过这个消息函数来设置控件的背景颜色函数必须返回一个画刷这个函数被调用多次每次对应一个控件afx_msg HBRUSH OnCtlColor(CDC* pDC, //控件设备描述CWnd* pWnd, //指向控件的指针UINT nCtlColor ); //控件的类型CWnd::GetDlgCtrlID() //CWnd类的成员函数通过对象来获取一个控件的ID 包括对话框ID 子窗口顶层窗口返回值无效CDC::SetBkMode(TRANSPARENT)设置背景模式。

MFC-显示对话框背景

MFC-显示对话框背景

一、创建MFC首先创建一个MFC对话框应用程序(Dialog-based Application)如下:在VS2005和2008里,我们可以用一个 Solution 来组合几个 Project (每个Project 基本上只包含一个 Program),当我们要构建一个多Program的应用时(例如一个客户端程序加一个服务器应用程序),利用 Solution 可以将这些Projects 组合起来、并且共享文件和函数库。

通常需要为Solution创建一个主路径,其中包含了所有Projects的路径。

不过在这篇文章里,我们只构建一个简单的Project,所以在创建MFC的New Project对话框里,不用勾选“Create directory for solution”这个选项。

点击OK -- Next进入下一步,在这里我们创建一个Dialog-based Application,大部分选项按默认设置就行,不过最下面的“Use Unicode libraries”最好去掉。

如果勾选了这个选项,程序代码就会使用16bit的Unicode字符集来编码,但是很多函数虽然使用 char* (ASCII stings) 类型字符,而将字符串从Unicode 转换到 ASCII 是非常麻烦的。

使用 Unicode 在编译时可能会遇到下列错误:cannot convert parameter 1 from 'CString' to 'const char *'cannot convert from 'const char [11]' to 'LPCWSTR'这意味着在Unicode和Multi-byte字符串的转换中出现了问题。

在上一篇学习笔记中,就提到“成员函数LoadBMP其输入参数类型应为const char*”,那应该只是一个治标的方法,这里的去掉“Use Unicode libraries”选项,才是治本之道。

Visual C++调整对话框背景颜色代码

Visual C++调整对话框背景颜色代码

【例Ex_BkColor 】调整对话框背景颜色① 用MFC AppWizard(exe)创建一个默认的对话框应用程序Ex_BkColor 。

② 将对话框的标题设为“调整对话框背景颜色”。

删除“TODO: 在这里设置对话控制。

”静态文本控件和[取消]按钮,将[确定]按钮标题改为“退出”。

③ 打开对话框网格,调整对话框大小为,参看图11.38的控件布局,添加如表11.19所示的一些控件。

表11.19 对话框添加的控件 添加的控件 ID 标识符标 题 其他属性 水平滚动条IDC_SCROLLB—— 默认 滑动条(绿色) IDC_SLIDER_G—— 默认 滑动条(蓝色) IDC_SLIDER_B —— 默认④ 打开ClassWizard 的Member Variables 页面,选中所需的控件ID 标识符,双击鼠标。

依次添加下列控件变量,如表11.20所示。

表11.20 控件变量 控件ID 标识符变量类别 变量类型变量名 范围和大小 IDC_SCROLLBAR_REDControlCScrollBar m_scrollRe d —— IDC_SLIDER_GREEN ControlCSliderCtrl m_sliderGr een ——IDC_SLIDER_GREENValue int m_nGreen IDC_SLIDER_BLUE Control CSliderCtrlm_sliderBlue——IDC_SLIDER_BLUEValue int m_nBlue ——⑤为CEx_BkColorDlg类添加两个成员变量,一个是int型m_nRedValue,用来指定RGB中的红色分量,另一个是画刷CBrush 类对象m_Brush,用来设置对话框背景所需要的画刷。

在OnInitDialog中添加下列初始化代码:BOOL CEx_BkColorDlg::OnInitDialog(){CDialog::OnInitDialog();…// TODO: Add extra initialization herem_scrollRed.SetScrollRange(0, 255);m_sliderBlue.SetRange(0, 255);m_sliderGreen.SetRange(0, 255);m_nBlue = m_nGreen = m_nRedValue = 192;UpdateData( FALSE );m_scrollRed.SetScrollPos(m_nRedValue);return TRUE; // return TRUE unless you set the focus to a control}⑥用MFC ClassWizard为CEx_BkColorDlg类添加WM_HSCROLL消息映射,并添加下列代码:void CEx_BkColorDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){int nID = pScrollBar->GetDlgCtrlID();// 获取对话框中控件ID值if (nID == IDC_SCROLLBAR_RED) { // 若是滚动条产生的水平滚动消息switch(nSBCode){case SB_LINELEFT: m_nRedValue--;// 单击滚动条左边箭头break;case SB_LINERIGHT: m_nRedValue++;// 单击滚动条右边箭头break;case SB_PAGELEFT: m_nRedValue -= 10;break;case SB_PAGERIGHT: m_nRedValue += 10;break;case SB_THUMBTRACK: m_nRedValue = nPos;break;}if (m_nRedValue<0) m_nRedValue = 0;if (m_nRedValue>255) m_nRedValue = 255;m_scrollRed.SetScrollPos(m_nRedValue);}Invalidate(); // 使对话框无效,强迫系统重绘对话框CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}⑦用MFC ClassWizard为CEx_BkColorDlg类添加WM_CTLCOLOR消息映射,并添加下列代码:HBRUSH CEx_BkColorDlg::OnCtlColor(CDC* pDC,CWnd* pWnd, UINT nCtlColor){UpdateData(TRUE);COLORREF color = RGB(m_nRedValue, m_nGreen, m_nBlue);m_Brush.Detach(); // 使画刷和对象分离m_Brush.CreateSolidBrush(color); // 创建颜色画刷pDC->SetBkColor( color ); // 设置背景颜色return (HBRUSH)m_Brush; // 返回画刷句柄,以便系统使此画刷绘制对话框}代码中,COLORREF是用来表示RGB颜色的一个32位的数据类型,它是Visual C++中一种专门用来定义颜色的数据类型。

MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用顺序

MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用顺序

MFC中改变对话框背景的几个消息函数OnEraseBkgnd、OnPaint、OnCtlColor的调用顺序设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示时调用OnSize()->OnEraseBkgnd(),->OnPaint()->OnCtlColor(), 若想改变对话框大小,比如全屏显示ShowWindow(SW_SHOWMAXIMIZED);UpdateWindow();其中ShowWindow会调用OnSize()->OnEraseBkgnd(),UpdateWindow();调用OnPaint()->OnCtlColor(),若对话框中没有设置消息响应OnEraseBkgnd(),,则系统默认消息响应OnEraseBkgnd()会调用OnCtlColor()设置对话框背景(即替代OnEraseBkgnd())对话框的背景设置可在OnCtlColor()中进行,因为OnCtlColor()一般会被多次调用,所以要想设置的CFont,CBrush等应在OnInitDialog中初始化,若要在OnCtlColor()中设置,在设置前先调用Detach就可以了,如下示例HBRUSH CDb3Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){if(pWnd->GetDlgCtrlID()==IDC_STATIC5){m_font.CreatePointFont(300,"宋体");pDC->SelectObject(&m_font);m_font.Detach();pDC->SetBkMode(TRANSPARENT);return (HBRUSH)::GetStockObject(NULL_BRUSH);}}但是如果在OnCtlColor()在设置背景图片,则图片不会随对话框大小按比例缩放所以可调用StretchBlt()函数设置,如下示例:void CDb3Dlg::OnPaint(){CClientDC cdc(this); CDC comdc;comdc.CreateCompatibleDC(&cdc);CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP2);comdc.SelectObject(&bitmap);CRect rect;GetClientRect(rect);BITMAP bit;bitmap.GetBitmap(&bit);cdc.StretchBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,bit.bmWidth,bit.bmHeight,SRCCOPY);}//全屏显示对话框背景图片(限bmp格式)用了两年的VC,其实对OnPaint的工作原理一直都是一知半解。

MFC中添加背景图片

MFC中添加背景图片

方法一:1、声明成员变量CBrush m_brush;2、在InitDialog中添加代码:3、重载对话框的OnCtlColor,改最后的返回值:方法二:把下面这段代码加进OnPaint()里就行了方法三:使用StretchBlt()函数,具有图像自适应窗体功能dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小dc.SelectObject(pOldBrush);问题有的程序员希望在自己的应用程序中以有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。

许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用Windows API 函数来改变对话框的背景为某个位图呢?方法改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。

当Windows 准备改变对话框背景的颜色时,通常发送两个消息给对话框。

第一个消息是WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框显示区域的任何显示。

第二个消息是WM_CTLCOLOR,发送此消息给对话框或窗口来表示Windows 需要知道对话框中控制的颜色。

在本节中,将重置对消息WM_ERASEBKGND 的处理,以便将位图绘制在窗口的背景上。

另外,将重置对消息WM_CTLCOLOR 的处理,以避免对话框中的控制“剪补”位图。

最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。

步骤按照下列步骤实现一个例子程序。

运行此例子程序,选择菜单Dialog 和菜单项Bitmap Background,将弹出一个对话框,显示背景位图和几个控制。

实现例子程序的具体步骤如下:1.在Visual C++中,利用AppWizard 创建新的项目文件,并命名此项目文件为Ld145。

MFC无标题栏对话框美化

MFC无标题栏对话框美化

1.无标题栏和边框的对话框Border 属性改为NoneTitle bar属性改为False2.对话框添加OnInitDialog函数OnInitDialog 在vs2010中实现为虚函数,所以在“项目”-> “类向导”-> “虚函数”->找到对应虚函数添加即可,就这么简单。

3.移动无标题栏的对话框拖动无标题窗口时,欺骗WINDOW在鼠标点下是像WINDOW发送一个鼠标选中WINDOW标题栏的消息!添加鼠标左键消息。

void CMyPlayerDlg::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default//使窗口可以拖动PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM (point.x, point.y));CDialog::OnLButtonDown(nFlags, point);}在OnLButtonDown的鼠标响应消息添加红色部分代码!WM_NCLBUTTONDOWN 鼠标选中非客户区域(标题栏)HTCAPTION 鼠标选中了标题栏MAKELPARAM (point.x, point.y)) 返回一个LPARAM的值PostMessage函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。

消息队列里的消息通过调用GetMessage和PeekMessage取得。

原型与参数如下:函数原型:BOOL PostMessage(UINT Msg,WPARAM wParam,LPARAM lParam);参数说明:Msg:指定被寄送的消息。

wParam:指定附加的消息特定的信息。

IParam:指定附加的消息特定的信息。

我整理的MFC界面美化

我整理的MFC界面美化

我整理的MFC界面美化一,对话框背景为一幅位图1.插入位图打开VC6.0MFC程序,右击“Dialog”,打开“引入”,选择图片就可以引入一个位图了。

2.打开“ClassView”,再打开“CAbouttDlg()”函数,找到void CTuxingDlg::OnPaint()函数,粘贴上CPaintDC dc(this);CRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP1);//IDB_BITMAP1是你自己的图对应的IDBITMAP 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);二.在对话框上显示一幅位图法一:把图片引入工程,其句柄名为IDB_BITMAP2;然后放一个静态控件或者图片控件到对话框上,将其句柄名设为IDC_SHOWBMP; 具体代码为在需要使用的地方(如按钮函数或OnInitDialog()或OnPaint()里等等)加入如下代码:CStatic *p =(CStatic *)GetDlgItem(IDC_SHOWBMP);HBITMAPhBitmap=::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESO URCE(IDB_BITMAP2));p->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);p->SetBitmap(hBitmap);详解:CStatic *p =(CStatic *)GetDlgItem(IDC_SHOWBMP); //获得指向IDC_SHOWBMP的指针,并将其强制转换为CStatic*类型,并赋值给pHBITMAPhBitmap=::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESO URCE(IDB_BITMAP2));//从工程资源处获得IDB_BITMAP2的位图句柄,并将其赋值给hBitmap变量p->Modifystyle(0xF,SS_BITMAP|SS_CENTERIMAGE);//设置该静态控件(p指向的静态控件),使其用于显示位图,并且是在控件中央显示//(若无此步无法显示,因为没有说明静态对话框要显示的类型是什么)p->SetBitmap(hBitmap);//将需要显示的位图设置为bBitmap,即资源IDB_BITMAP1的句柄法二:通过位图所在路径显示位图(此方法无需事先将位图文件添加为该工程的资源) 在对话框上放一个静态控件(一定是静态控件,若图片控件则无法显示) 将其重命名为IDC_BMP(不重命名的话无法添加变量),然后再为该控件添加一个变量,命名为m_image.在需要使用的地方(如按钮函数或OnInitDialog()或OnPaint()里等等)加入如下代码: this->m_image.ModifyStyle(0,SS_BITMAP |SS_CENTERIMAGE);HBITMAP hBmp = (HBITMAP)::LoadImage(0, "path\\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);this->m_image.SetBitmap(hBmp);详解:this->m_image.ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);//和上面的作用一样,将该静态控件设置为是用来显示位图的,只不过这里是通过该静态对话框的变量来进行/ /modifystyle操作的HBITMAP hBmp = (HBITMAP)::LoadImage(0, "path\\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); //从bmp文件所在的路径直接读取该bmp图象的句柄,并将其转换为HBITMAP类型//注:其中的"path\\1.bmp"是相对路径,即在和可执行文件的同一目录下有一个名为path的文件夹,里面有一个名为1.bmp的位图文件.this->m_image.SetBitmap(hBmp); //通过变量m_image来设置该静态框所显示的位图文件.三.列表控件的背景在BOOL CTuxingDlg::OnInitDialog()函数中添加以下代码m_List.SetBkColor(RGB(444, 233, 255)); //三个参数可以任意改变,下同m_List.SetTextBkColor(RGB(444, 233, 255));四.设置列表控件属性带有表格线在BOOL CTuxingDlg::OnInitDialog()函数中添加以下代码DWORD NewStyle = m_List.GetExtendedStyle();NewStyle |= LVS_EX_GRIDLINES; m_List.SetExtendedStyle(NewStyle);五.改变全部界面的背景颜色点击“Globals”,再打开“theApp”,在Bool CPersonalFinancialManagementSystemApp::InitInstance()函数中添加SetDialogBkColor(RGB(444, 233, 255), RGB(0, 0, 0));。

vc6.0中更改对话框背景色和字体颜色

vc6.0中更改对话框背景色和字体颜色

vc6.0中更改对话框背景⾊和字体颜⾊⽅法⼀:设置所有窗⼝的颜⾊MFC程序修改对话框的背景和⽂字颜⾊最简单的⽅法就是调⽤SetDialogBkColor函数,SetDialogBkColor是CWinApp类的成员函数,以下是该函数的原型:void CWinApp::SetDialogBkColor(COLORREF clrCtlBk, COLORREF clrCtlText);请注意,SetDialogBkColor函数并不是对Windows的某个API的封装,他是MFC框架的⼀部分,所以不使⽤MFC的程序也就不能享受这种⽅便。

这个函数的使⽤很简单,在程序的CWinApp派⽣类的InitInstance函数中,添加⼀⾏代码就⾏了,写在domodal()的上⼀句:SetDialogBkColor(RGB(188,197,230),RGB(13,125,188));注:前⼀个为背景⾊,后⼀个为字体颜⾊。

⽅法⼆:设置当前窗⼝改变对话框的背景颜⾊的原理很简单,就是响应WM_ERASEBKGND消息,⽤⾃定义的颜⾊填充对话框的客户区背景,代替对话框窗⼝默认的背景填充动作。

改变控件和字体的颜⾊同理,是响应WM_CTLCOLOR这⼀消息。

具体操作,⽅法如下:⾸先://消息映射BEGIN_MESSAGE_MAP(CHelloDlg, CDialog)//{{AFX_MSG_MAP(CHelloDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_CTLCOLOR() //字体颜⾊ON_WM_ERASEBKGND() //背景⾊ON_WM_QUERYDRAGICON()//}}AFX_MSG_MAPEND_MESSAGE_MAP()其次:定义两个函数afx_msg BOOL OnEraseBkgnd(CDC* pDC);afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);第三:重载OnEraseBkgnd和OnCtlColor其中预先定义:protected:CBrush m_brBkgnd;//设置对话框背景⾊⽅法⼀:可以实现(但有点问题)BOOL CHelloDlg::OnEraseBkgnd(CDC* pDC){CRect rect;GetClientRect(&rect);m_brBkgnd.CreateSolidBrush(RGB(183,213,213)); //背景⾊pDC->FillRect(&rect,&m_brBkgnd);return TRUE;}⽅法⼆:可⾏BOOL CClientDlg::OnEraseBkgnd(CDC* pDC){CBrush back(RGB(220,215,254));CBrush* pold=pDC->SelectObject(&back);CRect rect;pDC->GetClipBox (&rect);pDC->PatBlt (rect.left,rect.top,rect.Width(),rect.Height(),PATCOPY);pDC->SelectObject(pold);return TRUE;}⽅法三:也可⾏BOOL CHelloDlg::OnEraseBkgnd(CDC* pDC){CBrush MyBrush;MyBrush.CreateSolidBrush(RGB(0,255,0));CBrush *pOldBrush=pDC->SelectObject(&MyBrush);CRect Rect;GetClientRect(&Rect);pDC->Rectangle(&Rect);pDC->SelectObject(pOldBrush);return TRUE;}//设置对话框中控件的字体颜⾊HBRUSH CHelloDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);if(pWnd->GetDlgCtrlID() == IDC_EDIT_MULLINE) //多⾏edit控件{pDC->SetTextColor(RGB(13,125,188)); //设置字体颜⾊return hbr;}else{pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(255,125,188));return (HBRUSH)m_brBkgnd; //因为CBrush类实现了HBRUSH类型转换操作符 }}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对话框的背景
1、添加位图背景
首先在资源视图中添加bmp图片:选择项目名右击---添加—添加资源---Bitmap---导入---选择res文件中的位图(如果res文件中无位图请提前添加),此时可以知道位图ID为IDB_BITMAP1
(1)picture控件添加背景
在对话框中添加picture控件,并修改其属性,选中picture控件在属性表中修改Type为Bitmap,Image为IDB_BITMAP1。

此时图片就显示在对话框中
(2)在CPP文件中初始化显示位图
添加位图后,在源文件XXXDlg.cpp的void C XXX Dlg::OnPaint()函数中添加初始化代码如下:
void CbeijingDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpPri=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SR
CCOPY);
}
}
2、设置纯色背景
点击对话框添加成员变量CBrush m_brush,然后在源文件XXXDlg.cpp初始化位置添加如下代码:
// TODO: 在此添加额外的初始化代码?
m_brush.CreateSolidBrush(RGB(0,0,255)); /////添加的代码,用于创建蓝色画刷
return TRUE; // 除非将焦点设置到控件,否则返回TRUE
然后找到WM_CTLCOLOR消息,添加对应的函数OnCtlColor()
添加如下代码:
HBRUSH CbeijingsehewenziDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改DC 的任何特
return m_brush;
// TODO: 如果默认的不是所需画笔,则返回另个画笔
// return hbr;
}
这样运行后对话框背景色就变为蓝色。

相关文档
最新文档