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

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3242857.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(添加背景图片.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

添加背景图片.doc

1、vc+如何给窗体添加背景图片?VC 是一个功能强大的可视化的开发工具,但是用 VC 做的标准界面与 Windows 一样色彩灰暗单调,例如多文档窗口应用程序中的主框架窗口的背景便是如此。那么能否给主框架窗口的背景改变一下色彩或是给主框架窗口加上一幅漂亮的图片做背景?其实也不难。但与单文档窗口应用程序中改变框架窗口的背景方法不同,对多文档窗口应用程序中的主框架窗口改变背景不能简单地用 ClassWizard 重载 OnEraseBkgnd(CDC pDC)函数的方法实现。因为多文档窗口应用程序中的主框架窗口的背景区是一个 MDIClient 类的窗口,因此改变背景与这个 MDIClient 类的

2、窗口有关。MDIClient 类的窗口的句柄是 m_hWndMDIClient(在 CMDIFrameWnd 中)。以下是其实现的步骤: 一、 使用 MFC AppWizard 向导创建一个多文档窗口应用程序 1、在 VC 的“File”菜单中单击New,弹出一“New”对话框。在“Projects”页中选择“MFC AppWizard exe”,在“Project name”编辑框中输入“DrawBackground”,按OK 按钮,退出“New”对话框。 2、在“MFC AppWizard step 1”对话框到“MFC AppWizard step 6”对话框中选择默认选项,按Finis

3、h按钮即完成多文档窗口应用程序的定制。 注:MFC(Microsoft Foundation Class)是 MSVisual C的类库。 二、向应用程序添加位图 在 VC 的“View”菜单中单击“Resource Includes.”, 在弹出对话框中选择“Bitmap”, 按Import按钮从文件中加载位图文件,单击“Workspace”的“Resource”便可见到刚才加载的位图文件,默认的资源标识符为 IDB_BITMAP1。 三、用 ClassWiard 生成一个 CWnd 类的派生类 CclientWnd 在 CclientWnd 类中重载 OnEraseBkgnd(CDC pD

4、C),OnSize(UINT nType, int cx, int cy)函数,并用手工加入重载的虚函数 WNDPROC CClientWnd:GetSuperWndProcAddr()用来返回函数指针。 类 CclientWnd 的头文件代码如下: class CClientWnd : public CWnd / Construction public: CClient(); / Attributes public: / Operations public: / Overrides / ClassWizard generated virtual function overrides file

5、:/AFX_VIRTUAL(CClientWnd) public: virtual WNDPROC GetSuperWndProcAddr(); file:/AFX_VIRTUAL / Implementation public: virtual CClientWnd(); / Generated message map functions protected: file:/AFX_MSG(CClientWnd) afx_msg BOOL OnEraseBkgnd(CDC pDC); afx_msg void OnSize(UINT nType, int cx, int cy); file:/

6、AFX_MSG DECLARE_MESSAGE_MAP() ; 类 CclientWnd 的实现文件代码如下: / CClientWnd message handlers BOOL CClientWnd:OnEraseBkgnd(CDC pDC) / TODO: Add your message handler code here and/or call default CRect rectbk; / 客户区的大小 CDC dcMen; / 内存设备描述表 CBitmap bmbk; / 位图对象 bmbk.LoadBitmap(IDB_BITMAP1); / 从资源加载位图 bitmap /

7、 得到位图 bitmap 的大小 BITMAP stBitmap; bmbk.GetObject(sizeof(BITMAP),stBitmap); CSize bmsize(stBitmap.bmWidth,stBitmap.bmHeight); / dcMen.CreateCompatibleDC(pDC); / 创建兼容的设备描述表 / 选入新的位图对象并保存旧的位图对象 CBitmap pold=dcMen.SelectObject( bmbk); GetClientRect(rectbk); / 取得客户区的大小 / 从内存向屏幕复制位图对象 pDCStretchBlt(rectbk

8、.left,rectbk.top,rectbk.Width(), rectbk.Height(),dcMen,0,0,bmsize.cx,bmsize.cy,SRCCOPY); dcMen.SelectObject(pold); / 恢复旧的位图对象 dcMen.DeleteDC();/ 释放内存设备描述表 return true; WNDPROC CClientWnd:GetSuperWndProcAddr() static WNDPROC NEAR pfnSuper = NULL; return pfnSuper; / 返回函数指针 void CClientWnd:OnSize(UINT

9、nType, int cx, int cy) CWnd:OnSize(nType, cx, cy);/ TODO: Add your message handler code here file:/重画窗口 Invalidate(); 四、修改 CMainFrame 类 在 CMainFrame 类中定义一个 CClientWnd 类的成员变量 m_wndClient,并在CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)函数中把 m_wndClient 子类化为主框架窗口的客户窗口。代码如下: 在 MainFrm.h 中加入: include

10、 “ClientWnd1.h“ class CMainFrame : public CMDIFrameWnd private: CClientWnd m_wndClient; MainFrm.cpp 中加入代码如下: int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CMDIFrameWnd:OnCreate(lpCreateStruct) = 1) return 1; file:/把 m_wndClient 子类化为主框架窗口的客户窗口 if(!m_wndClient.SubclassWindow(m_hWndMDIClie

11、nt) TRACE(“Fail to subclass MDI client windown“); return 1; 五、关键技术 1、本程序并不复杂,关键是要知道多文档窗口应用程序中的主框架窗口的背景区是一个 MDIClient 类的窗口。 2、选用函数要正确,如 CClientWnd:OnEraseBkgnd(CDC pDC)函数中选用 GetClientRect(rectbk) 函数来取得客户区的大小要比选用 GetClipBox(rectbk) 函数来得好。 3、要在 CclientWnd 类中重载 OnSize(UINT nType, int cx, int cy) 函数,并加入 Invalidate() 函数重画窗口。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。