VC++程序设计2015教案解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
menu.Detach(); GetParent()-DrawMenuBar(); 注意:在dlgCpp的头文件#include “Dialog1.h”下(依次)添加 #include t1Doc.h #include t1View.h“ 4、在Viewcpp下添加映射函数 BOOL CT1View::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { WPARAM MenuId=GetCurrentMessage()-wParam; //获得当前被单击的菜单的ID号 if(MenuId==(m_ID_old+m_times) nCode==CN_COMMAND)//菜单项被单击 { //根据strMenuName进行不同处理 MessageBox(hello); } return CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); } 位图 1.装载位图 2.显示位图 绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。?? ???? 这就要用到双缓存的方法了。双缓冲就是除了在屏幕上有图形进行显示以外,在内存中也有图形在绘制。我们可以把要显示的图形先在内存中绘制好,然后再一次性的将内存中的图形按照一个点一个点地覆盖到屏幕上去(这个过程非常快,因为是非常规整的内存拷贝)。这样在内存中绘图时,随便用什么反差大的背景色进行清除都不会闪,因为看不见。当贴到屏幕上时,因为内存中最终的图形与屏幕显示图形差别很小(如果没有运动,当然就没有差别),这样看起来就不会闪。 双缓存:就是在内存中准备一块区域,把要显示的位图都加载到内存中,然后调用BitBlt函数,把内存设备复制到显示设备上,这样就可以防止闪屏了.. 下面是在VC中,实现的步骤.. CBitmap bitmap1,*pOldbitmap; bitmap1.LoadBitmap(IDB_BITMAP1); CDC memDC1,*pDC; pDC=GetDC(); memDC1.CreateCompatibleDC(pDC); pOldbitmap=memDC1.SelectObject(bitmap1); pDC-BitBlt(x_b, 0, 600, 600, memDC1, 0, 0, SRCCOPY); //该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境 pDC-FillSolidRect(0, 0, x_b, 600,RGB(255,255,255)); memDC1.SelectObject(pOldbitmap); // 调用该成员函数用指定的固体色填充矩形 BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop); hdcDest:指向目标设备环境的句柄。 nXDest:指定目标矩形区域左上角的X轴逻辑坐标。 nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。 nWidth:指定源和目标矩形区域的逻辑宽度。 nHeight:指定源和目标矩形区域的逻辑高度。 hdcSrc:指向源设备环境的句柄。 nXSrc:指定源矩形区域左上角的X轴逻辑坐标。 nYSrc:指定源矩形区域左上角的Y轴逻辑坐标。 dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。 位图动画 1、手工,在菜单下添加位图显示相关代码,变化坐标。 2、自动 void CTest1View::OnTimer(UINT nIDEvent) { if(x_b==1000||x_b==0) flag=!flag; if (flag==1) { x_b=x_b+1; } else { x_b=x_b-1; } UpdateData(true); CBitmap bitmap1,*pOldbitmap; bitmap1.LoadBitmap(IDB_BITMAP1); CDC memDC1,*pDC;

文档评论(0)

我是兰花草 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档