ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:42KB ,
资源ID:7182868      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7182868.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(MFC中添加背景图片.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

MFC中添加背景图片.doc

1、方法一: 1、声明成员变量CBrush m_brush; 2、在InitDialog中添加代码: ? CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是图片资源ID m_brush.CreatePatternBrush(&bmp); 3、重载对话框的OnCtlColor,改最后的返回值: ? 1 return(HBRUSH)m_brush; 方法二: 把下面这段代码加进OnPaint()里就行了 ? CPaintDC dc(this); CBitmap bitmap; bitmap.

2、LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小 dc.SelectObject(pOldBrush); 方法三:使用StretchBlt()函数,具有图像自适应窗体功能 ? CPaintDC dc(this); CB

3、itmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小 dc.SelectObject(pOldBrush); 问题    有的程序员希望在自己的应用程序中以

4、有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。    许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用 Windows API 函数来改变对话框的背景为某个位图呢? 方法    改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。    当 Windows 准备改变对话框背景的颜色时,通常发送两个消息给对话框。第一个消息是 WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框

5、显示区域的任何显示。    第二个消息是 WM_CTLCOLOR,发送此消息给对话框或窗口来表示 Windows 需要知道对话框中控制的颜色。    在本节中,将重置对消息 WM_ERASEBKGND 的处理,以便将位图绘制在窗口的背景上。另外,将重置对消息 WM_CTLCOLOR 的处理,以避免对话框中的控制“剪补”位图。最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。 步骤    按照下列步骤实现一个例子程序。运行此例子程序,选择菜单 Dialog 和菜单项 Bitmap Background,将弹出一个对话框,显示背景位图和几个控制。

6、    实现例子程序的具体步骤如下:    1.在 Visual C++ 中,利用 AppWizard 创建新的项目文件,并命名此项目文件为 Ld145。    2.进入资源编辑器并创建新的对话框模板。在对话框中,添加几个静态文本域和编辑域,以及几个单选按钮和列表框。对话框的实际组成并不重要,只要能够覆盖部分位图就可以了。    3.选择 ClassWizard,为刚创建的对话框模板创建对话框类,新类命名为 CBitmaPBkgdDlg。    4.在资源编辑器中创建新的位图。    5.进入 ClassWizard,从下拉列表中选择 CBitmapBkgdDlg,从对象列

7、表中选择对象 CBitmapBkgdDlg,从消息列表中选择消息 WM_INITDIALOG,点击按钮 Add Function,在 CBitmapBkgdDlg 的方法 OnInitDialog 中添加下列代码: BOOL CBitmapBkgdDlg::OnInitDialog() { CBitmap * pBmpOld; RECT rectClient; VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH)); VERIFY(m_Bitmap.LoadBitmap(IDB_BITMAP1)); m_

8、Bitmap.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; CClientDC dc(this); VERIFY(m_dcMem.CreateCompatibleDC(&dc)); VERIFY(pBmpOld=m_dcMem.SelectObject(&m_Bitmap))

9、 VERIFY(m_hBmpOld=(HBITMAP)pBmpOld->GetSafeHandle()); return TRUE; // return TRUE unless you set the focus to a control }    6.接着,在 ClassWizard 中,从对象列表中选择对象 CBitmapBkgdDlg,从消息列表中选择消息 WM_CTLCOLOR,点击按钮 Add Function,在 CBitmapBkgdDlg 的方法 OnCtlColor 中添加下列代码: HBRUSH CBitmapBkgdDlg::OnCtlC

10、olor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { pDC->SetBkMode(TRANSPARENT); return m_brush; }    7.接着,在 ClassWizard 中,从对象列表中选择对象 CBitmapBkgdDlg,从消息列表中选择消息 WM_DESTROY,点击按钮 Add Function,在 CBitmapBkgdDlg 的方法 OnDestroy 中添加下列代码: void CBitmapBkgdDlg::OnDestroy() { CDialog::OnDestroy();

11、 ASSERT(m_hBmpOld); VERIFY(m_dcMem.SelectObject(CBitmap::FromHandle(m_hBmpOld))); m_Bitmap.DeleteObject(); }    8.编辑 CBitmapBkgdDlg 的消息映射如下,添加的新行用暗红色字体表示: BEGIN_MESSAGE_MAP(CBitmapBkgdDlg, CDialog) //{{AFX_MSG_MAP(CBitmapBkgdDlg) ON_WM_CTLCOLOR() ON_WM_DESTROY() ON_WM_ERA

12、SEBKGND() //}}AFX_MSG_MAP END_MESSAGE_MAP()    9.在 CBitmapBkgdDlg 的源文件 BitmapBkgdDlg.cpp 中添加下列新方法: BOOL CBitmapBkgdDlg::OnEraseBkgnd(CDC * pDC) { pDC->StretchBlt(m_pt.x,m_pt.y,m_size.cx,m_size.cy,&m_dcMem, 0,0,m_bmInfo.bmWidth-1,m_bmInfo.bmHeight-1,SRCCOPY); return TRUE; }

13、    10.在 CBitmapBkgdDlg 的头文件 BitmapBkgdDlg.h 中做下列修改,用暗红色字体表示。 class CBitmapBkgdDlg : public CDialog { protected: CDC m_dcMem; CBitmap m_Bitmap; HBITMAP m_hBmpOld; HBRUSH m_brush; BITMAP m_bmInfo; CPoint m_pt; CSize m_size; // Construction public: CBitmapBkgdDlg(CWnd* p

14、Parent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CBitmapBkgdDlg) enum { IDD = IDD_DIALOG1 }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CBitmapBkgdDlg) pr

15、otected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CBitmapBkgdDlg) virtual BOOL OnInitDialog(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);

16、 afx_msg void OnDestroy(); virtual BOOL OnEraseBkgnd(CDC * pDC); //}}AFX_MSG DECLARE_MESSAGE_MAP() };    11.进入资源编辑器,在菜单 IDR_MAINFRAME 中添加新的菜单,标题为 Dialog。在菜单 Dialog 中添加新的菜单项,标题为 Bitmap Background,标识符为 ID_BITMAP_BKGND,退出资源编辑器,保存资源文件。    12.进入 ClassWizard,从下拉列表中选择对象 CMainFrame,从对象列表中选择对象

17、ID_BITMAP_BKGND,从消息列表中选择消息 COMMAND,点击按钮 Add Function,新函数命名为 OnBitmapBkgnd。在 CMainFrame 的方法 OnBitmapBkgnd 中添加下列代码: void CMainFrame::OnBitmapBkgnd() { CBitmapBkgdDlg dlg; dlg.DoModal(); }    13.在源文件 MainFrm.cpp 的顶部添加下列行:    #include "BitmapBkgdDlg.h"    14.编译并运行此例子程序。 用法   

18、 当 Windows 初始化对话框时,它发送消息 WM_ERASEBKGND 给对话框的窗口句柄。程序员可以捕捉此消息,以便在应用程序中抹去对话框的背景。在本节中,首先捕捉此消息,接着调用 API 函数 StretchBlt 来将位图(从资源文件中装入)拷贝到对话框的背景上。    在对话框的方法 OnCtlColor 中,通过设置背景模式为透明来确保对话框中的控制不会“剪补”俭图,从而使得位图看起来好像是绘制在对话框中的,没有静态控制的背景所引起的空白。 在工具条上使用16色以上位图操作说明书 本操作说明书既适用于一般的工具条,也适用于三维CAD中使用的向导工具条。 步骤:

19、 1、 首先在VC中制做16色的工具条。因为工具条资源中包含ID、尺寸等信息,为简便起见,本说明书在16色工具条的基础上附加16色以上位图,即首先应有完整的16色工具条。 2、 相应于工具条资源,添加位图资源。如工具条为IDR_MYTOOLBAR,则位图资源ID建议为:IDB_MYTOOLBAR_NORMAL。注意,把文件名也相应改变,如改为:mytoolbar_normal.bmp等。也利后续操作。不要在VC中编缉该资源。 3、 创建工具条后,用以下方法附加工具条位图资源。 CImageList imageList; CBitmap bitmap; bitmap.LoadBitma

20、p(m_nToolBarIDNormal); BITMAP bm; ::GetObject((HBITMAP)bitmap, sizeof(BITMAP), (LPVOID)&bm); imageList.Create(16, 15, ILC_COLORDDB|ILC_MASK, bm.bmWidth/16, 1); imageList.Add(&bitmap, RGB(255,0,255)); CImageList *pOldImageList = m_wndToolBar.GetToolBarCtrl().SetImageList(&i

21、mageList); If(pOldImageList) pOldImageList-> DeleteImageList();//一定有,否则引起资源泄漏税 imageList.Detach(); DISABLE和HOT位图资源附加方法同上。 注意:设置背景颜色(RGB(255, 0, 255)应和位图的实际颜色一致,否则会出现背景。 4、 在画笔中,设置位图高度为15像素。把工具条图标依次排列,设置背景色,保存为第二步中设定的文件名。 5、 编译程序,完成。 遇到过一个问题,有的按钮上动态生成了控件,大小不一. 已经解决了: UINT nID ; U

22、INT nStyle; int iImage ; int nCount = m_wndFormatBar.GetToolBarCtrl().GetButtonCount(); for(int i = 5 ; i < nCount ; i++) { m_wndFormatBar.GetButtonInfo(i,nID,nStyle,iImage); m_wndFormatBar.SetButtonInfo(i,nID,nStyle,i - 5); } 现在菜单标题前的位图与工具栏的位图不一致,大家有没有简

23、单的方法? 我要改n个程序. 好累啊! int WINAPI icePub_dispImg(HWND hWnd,char *strImgFilename,int x,int y) 输入:hWnd 窗体或控件句柄 strImgFilename 待显示的图片文件名 x x坐标 y y坐标 输出: { typedef int (WINAPI ICEPUB_DISPIMG)(HWND hWnd,char *strImgFilename,int x,int y); ICEPUB_DISPIMG *icePub

24、dispImg = 0; HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll"); if(hDLLDrv) { icePub_dispImg = (ICEPUB_DISPIMG *)GetProcAddress(hDLLDrv, "icePub_dispImg"); } if(icePub_dispImg != NULL) icePub_dispImg(m_hWnd,"b.png",10,10); // icePub_dispImg(m_ctrlText.m_hWnd,"b.jpg",0,0); if(hDLLDrv) FreeLibrary(hDLLDrv); }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服