CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

我该怎么去清除前一次的数据?

楼主xyzll32()2006-06-02 19:51:13 在 VC/MFC / 界面 提问

我在画图的时候,做两个不一样的图。因为都是通过擎按扭显示图片。但是我的问题是在显示第一个  
  图片后,第二次显示的结果还是被记录下来了。  
  只有通过窗口重画来消除界面的图片,我该怎么去把前次记录下来的图片清除。  
   
  还有就是我在拖动窗口大小的时候,图片会因为重画而消失。我该怎么实现?  
   
  上面的问题都是在VIEW类里面实现的,没有涉及到DOC。只在VIEW类里面实现,能否给  
   
  出具体实现的原代码!  
   
  谢谢! 问题点数:40、回复次数:2Top

1 楼ssbelle(沉默的骆驼)回复于 2006-06-02 20:04:15 得分 0

CDC   MemDC;    
  CBitmap   MemBitmap;  
   
  MemDC.CreateCompatibleDC(NULL); //Create   MemDC  
  MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); //Create   MemBitmap  
  CBitmap   *pOldBit=MemDC.SelectObject(&MemBitmap); //Select   MemBitmap   into   MemDC   to   Draw  
   
  //Draw   image   here  
                    fnDrawImage(CXXImage*   pImage,&MemDC);  
   
  //Paint   the   MemBitmap   in   the   MemDC   to   pDC  
  pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);  
  MemDC.SelectObject(pOldBit);  
  MemBitmap.DeleteObject();  
  MemDC.DeleteDC();Top

2 楼xyzll32()回复于 2006-06-02 21:07:55 得分 0

我的图片不是自己用鼠标画的。是通过下面的语句实现的  
   
                    IPicture   *pPic;  
  IStream   *pStm;  
  CFileStatus   fstatus;  
  CFile   file;  
  LONG   cb;  
  CString   path;  
  if(i==1)  
  {path="./router.bmp";}  
  else   if(i==2)  
  {path="./switch.bmp";}  
  else   if(i==3)  
  {path="./host2.bmp";}  
  if(file.Open(path,CFile::modeRead)  
  &&file.GetStatus(path,fstatus)  
  &&((cb=fstatus.m_size)!=-1))  
  {  
  HGLOBAL   hGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);  
  LPVOID   pvData=   NULL;  
  if(hGlobal!=NULL)  
  {  
  if((pvData=   GlobalLock(hGlobal))!=NULL)  
  {  
  file.ReadHuge(pvData,cb);  
  GlobalUnlock(hGlobal);  
  CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);  
  if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))  
  {  
  OLE_XSIZE_HIMETRIC   hmWidth;  
                                          OLE_YSIZE_HIMETRIC   hmHeight;  
  pPic->get_Width(&hmWidth);  
  pPic->get_Height(&hmHeight);  
  double   fX,fY;  
  fX=(double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/  
  ((double)pDC->GetDeviceCaps(HORZRES)*60.0);  
  fY=(double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/  
  ((double)pDC->GetDeviceCaps(VERTSIZE)*120.0);  
  if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,  
  0,hmHeight,hmWidth,-hmHeight,NULL)))  
  MessageBox("ffff");  
  pDC->TextOut(x,y+80,ip);  
  pPic->Release();  
  }  
  else  
  {  
  MessageBox("lalalal");  
  }  
                    }  
                                      }  
            }  
  else  
  {  
                MessageBox("adgadg");  
  }  
   
  现在我要让WINDOWS重画之后不图片还是没有销毁   。  
   
  上面的语句的意思是让图片先保存在pOldBit里面。  
  然后在显示吧。  
   
  我也可以这样实现吗?Top

相关问题

关键词

得分解答快速导航

  • 帖主:xyzll32

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo