CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

各位老大帮我看看下面的程序问题出在那里,高分送。

楼主laolaoliu2002(老刘----狂热的热爱人民币)2003-05-01 14:40:50 在 VC/MFC / 基础类 提问

为什么图片显示不了呢?程序如下请各位老大指点。  
  m_ImageList.Create(74,30,ILC_COLOR24,0,2);  
  int   size   =   64;    
  CBitmap   bitmap,bit;    
  BITMAP   bm;    
   
  bitmap.LoadBitmap(IDB_BITMAP1);  
  bitmap.Attach(LoadImage(NULL,"D:\\test\\bmp\\1.bmp",IMAGE_BITMAP,NULL,NULL,LR_LOADFROMFILE|LR_DEFAULTCOLOR|LR_DEFAULTSIZE));  
  bitmap.GetObject(sizeof(bm),   &bm);  
  CDC   speicherDC;  
  speicherDC.CreateCompatibleDC(GetDC());  
  speicherDC.SelectObject(&bitmap);  
  CDC   BmpDC;  
  BmpDC.CreateCompatibleDC(GetDC());  
  bit.CreateCompatibleBitmap(GetDC(),size,size);    
  BmpDC.SelectObject(&bit);  
  BmpDC.SetStretchBltMode(HALFTONE);  
  ::SetBrushOrgEx(BmpDC.m_hDC   ,0,0,NULL);  
  BmpDC.StretchBlt(0,   0,size,size,&speicherDC,   0,   0,   bm.bmWidth,   bm.bmHeight,   SRCCOPY);  
  m_ImageList.Add(&bit,   RGB(0,0,0));  
  m_ImageList.Add(&bit,   RGB(0,0,0));  
  m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);  
  for(int   index   =   0;index<4;index++)  
  {  
  LVITEM   li;  
  li.iItem=index;  
  li.mask=   LVIF_IMAGE;  
  li.iSubItem=0;  
  li.iImage   =   index;  
  int   iItem=m_ListCtrl.InsertItem(&li);  
  m_ListCtrl.SetItemText(index,1,"name");  
  }  
  问题点数:100、回复次数:12Top

1 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2003-05-01 14:42:43 得分 0

上面的程序贴错了程序如下:  
   
  m_ImageList.Create(74,30,ILC_COLOR24,0,2);  
  int   size   =   64;    
  CBitmap   bitmap,bit;    
  BITMAP   bm;    
   
  bitmap.Attach(LoadImage(NULL,"D:\\test\\bmp\\1.bmp",IMAGE_BITMAP,NULL,NULL,LR_LOADFROMFILE|LR_DEFAULTCOLOR|LR_DEFAULTSIZE));  
  bitmap.GetObject(sizeof(bm),   &bm);  
  CDC   speicherDC;  
  speicherDC.CreateCompatibleDC(GetDC());  
  speicherDC.SelectObject(&bitmap);  
  CDC   BmpDC;  
  BmpDC.CreateCompatibleDC(GetDC());  
  bit.CreateCompatibleBitmap(GetDC(),size,size);    
  BmpDC.SelectObject(&bit);  
  BmpDC.SetStretchBltMode(HALFTONE);  
  ::SetBrushOrgEx(BmpDC.m_hDC   ,0,0,NULL);  
  BmpDC.StretchBlt(0,   0,size,size,&speicherDC,   0,   0,   bm.bmWidth,   bm.bmHeight,   SRCCOPY);  
  m_ImageList.Add(&bit,   RGB(0,0,0));  
  m_ImageList.Add(&bit,   RGB(0,0,0));  
  m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);  
  for(int   index   =   0;index<4;index++)  
  {  
  LVITEM   li;  
  li.iItem=index;  
  li.mask=   LVIF_IMAGE;  
  li.iSubItem=0;  
  li.iImage   =   index;  
  int   iItem=m_ListCtrl.InsertItem(&li);  
  m_ListCtrl.SetItemText(index,1,"name");  
  }  
  Top

2 楼rogerfz(我是天才,天生蠢才)回复于 2003-05-01 17:54:10 得分 0

你是不是想要贴位图啊,如果是,应该是这样:              
                    CClientDC   dc(this);  
  CBitmap   bitmap;  
  bitmap.LoadBitmap(IDB_BITMAP2);  
   
  CDC   *pmemdc=new   CDC;  
  pmemdc->CreateCompatibleDC(&dc);  
  pmemdc->SelectObject(&bitmap);  
  dc.BitBlt(637,26,784,307,pmemdc,0,0,SRCCOPY);  
  delete   pmemdc;Top

3 楼robertxiao(我心飞翔)回复于 2003-05-01 18:06:18 得分 0

你的int   iItem=m_ListCtrl.InsertItem(&li);忘了把图插进去  
   
  应该是int   iItem=m_ListCtrl.InsertItem(&li,   m_imageList);  
   
  后面还应在加一句m_ListCtrl.SetReDraw(TRUE);进行刷新  
  Top

4 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2003-05-01 19:54:20 得分 0

没有人能看出来错在那里吗?  
    robertxiao(翔)   你说的方法不行。Top

5 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2003-05-01 19:57:09 得分 0

我自己来顶一下。Top

6 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2003-05-01 19:57:25 得分 0

我自己来顶一下。Top

7 楼KcSoft(猎鹰魔法)回复于 2003-05-01 20:04:07 得分 0

可能是要在画背景的函数返回NULL。Top

8 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2003-05-01 20:09:49 得分 0

能说的详细一些吗?Top

9 楼Mackz(在相互)回复于 2003-05-01 20:39:22 得分 50

试试:  
  ......  
  CDC   speicherDC;  
  CDC   *pDC=GetDC();  
  speicherDC.CreateCompatibleDC(pDC);  
  CBitmap   *pOldBitmap   =   speicherDC.SelectObject(&bitmap);  
  CDC   BmpDC;  
  BmpDC.CreateCompatibleDC(pDC);  
  bit.CreateCompatibleBitmap(pDC,size,size);    
  ReleaseDC(pDC);  
  CBitmap   *pOldBmp   =   BmpDC.SelectObject(&bit);  
  BmpDC.SetStretchBltMode(HALFTONE);  
  ::SetBrushOrgEx(BmpDC.m_hDC   ,0,0,NULL);  
  BmpDC.StretchBlt(0,   0,size,size,&speicherDC,   0,   0,   bm.bmWidth,   bm.bmHeight,   SRCCOPY);  
  speicherDC.SelectObject(pOldBitmap);  
  speicherDC.DeleteDC();  
  bitmap.DeleteObject();  
  BmpDC.SelectObject(pOldBmp);  
  BmpDC.DeleteDC();  
  m_ImageList.Add(&bit,   RGB(0,0,0));  
  m_ImageList.Add(&bit,   RGB(0,0,0));  
  bit.DeleteObject();  
  m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);  
  for(int   index   =   0;index<4;index++)  
  {  
  LVITEM   li;  
  li.iItem=index;  
  li.mask=   LVIF_IMAGE;  
  li.iSubItem=0;  
  li.iImage   =   index   %   2;  
  int   iItem=m_ListCtrl.InsertItem(&li);  
  m_ListCtrl.SetItemText(iItem,0,"name");  
  }  
  Top

10 楼In355Hz(好象一条狗)回复于 2003-05-01 21:24:34 得分 50

1.创建的   CImageList   尺寸(74,30)好像和   Add   的   Image(64,64)   不一致,如果   CImageList   尺寸为(64,64),   Image   可以是(n*64,64)  
   
  2.检查一下   LoadImage   是否成功  
  LoadImage(NULL,   _T("D:\\test\\bmp\\1.bmp"),   IMAGE_BITMAP,   0,   0,   LR_LOADFROMFILE);  
   
  3.你的   ListCtrl   是   report,   list,   small   icon   还是   large   icon   ?   ListCtrl   拥有两个   ImageList   分别包含   large   icon   和   small   icon,   你应该根据   ListCtrl   显示方式的不同设置不同的   ImageList。如果你的   ListCtrl   需要在不同显示方式下切换,需要同时设置两个   ImageList   并且保证各自包含的图标一一对应  
  m_ListCtrl.SetImageList(&m_ImageList,   LVSIL_NORMAL);  
   
  此外保存   large   icon   和   small   icon   的   ImageList   尺寸应该和   GetSystemMetrics   通过  
  SM_CXICON/SM_CXICON,SM_CXSMICON/SM_CYSMICON   取得的尺寸一致,通常   large   icon   是   (32,32)   small   icon   是   (16,16)  
   
  4.   这一段代码可以简化成  
  for(int   index   =   0;   index   <   4;   index++)  
  {  
          m_ListCtrl.InsertItem(index,   _T("name"),   nImage);  
  }  
   
   
  Top

11 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2003-05-01 21:48:56 得分 0

谢谢各位,问题已经解决,CImageList   尺寸(74,30)和   Add   的   Image(64,64)   不一致所以没有显示,我将其中的size,size分别改为70和30就显示图片了,好了,揭帖。Top

相关问题

  • 各位老大,请教一下关于jndi的一些问题(120分送上)
  • 我想考程序员,请各位高手给点建议,有分送
  • 请教各位老大,关于stringgrid的用法,小弟初用,请各位指点,小弟200分送上,
  • 各位老大,一个问题:李维的三本书哪有down的,60分送上,急
  • 向各位请教一个奇怪的问题,这个程序有啥问题?92大分送上!
  • 各位高人,sql server 7单机版随程序一起发布的问题总结,高分送给!
  • 初学做设备驱动程序,问题多多啊:(,老大们帮帮忙了,高分送上了,不够再加上了
  • 各位老大帮我看看我的程序错在哪??
  • 各位老大帮小弟看一段程序,谢谢!!
  • 请各位老大帮忙解释一下这段程序

关键词

  • null
  • bmpdc
  • speicherdc
  • imagelist
  • bitmap
  • bm
  • selectobject
  • listctrl
  • createcompatibledc
  • getdc

得分解答快速导航

  • 帖主:laolaoliu2002
  • Mackz
  • In355Hz

相关链接

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

广告也精彩

反馈

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