6355|11

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SHLoadDIBitmap [复制链接]

HBITMAP   bitmap = SHLoadDIBitmap(m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);
这个函数是用在wince下开发的函数,是载入图片的,我用的abitmap=shloaddibitmap(路径),调用也是成功的,但是有一问题就是在调用了上百次后就有可能返回一次不成功
谁知道什么原因不

最新回复

我现在也遇到了这个问题,不知道哪里泄露~~~ 楼主解决了的话拜托说一声。我的邮箱:kedamuyizhaoyang@126.com  详情 回复 发表于 2010-1-26 21:07
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个问题太有挑战性了,没玩过,也想知道为什么,帮顶!
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你是怎么调用的呢?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
有这样的BUG?MS没提到啊!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
我的代码,发现每次调用SHLoadDIBitmap之后,内存就减少,但是一直没有内存增加情况(如果我释放了,就应该增加吧)。不知道我哪里出问题
内存使用率: 27%
可用物理内存: 82944000
可用虚拟内存: 20905984
内存使用率: 27%
可用物理内存: 82681856
可用虚拟内存: 20643840

  1. BOOL CEntertainDlg::OnEraseBkgnd(CDC* pDC)
  2. {
  3.     // TODO: 在此添加消息处理程序代码和/或调用默认值

  4.     //return CDialog::OnEraseBkgnd(pDC);
  5.    
  6.     //MessageBox(m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);
  7. Memory_Test();
  8.         HBITMAP   bitmap = SHLoadDIBitmap(m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);
  9.         //HBITMAP   bitmap =LoadBitmap(AfxGetInstanceHandle(),m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);
  10. Memory_Test();
  11.         HBITMAP   oldbitmap;   
  12.         CDC   memdc;   
  13.         memdc.CreateCompatibleDC(pDC);                  
  14.         //oldbitmap=(HBITMAP)memdc.SelectObject(bitmap);   
  15.         memdc.SelectObject(bitmap);   
  16.         pDC->StretchBlt(m_rcFullScreen.left, m_rcFullScreen.top, m_rcFullScreen.right, m_rcFullScreen.bottom,
  17.                                         &memdc,
  18.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.left,
  19.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.top,
  20.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.right,
  21.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.bottom
  22.                                         ,SRCCOPY);   
  23.         DeleteObject(bitmap);   
  24.        
  25.         //memdc.SelectObject(oldbitmap);  
  26.        memdc.DeleteDC();     
  27. Memory_Test();
  28.        return TRUE;
  29. }
复制代码
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
上面是修改过都,还是不可以,下面都是没有修改
  1. BOOL CEntertainDlg::OnEraseBkgnd(CDC* pDC)
  2. {
  3.     // TODO: 在此添加消息处理程序代码和/或调用默认值

  4.     //return CDialog::OnEraseBkgnd(pDC);
  5.    
  6.     //MessageBox(m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);

  7.         HBITMAP   bitmap = SHLoadDIBitmap(m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);

  8.         HBITMAP   oldbitmap;   
  9.         CDC   memdc;   
  10.         memdc.CreateCompatibleDC(pDC);                  
  11.         oldbitmap=(HBITMAP)memdc.SelectObject(bitmap);   
  12.         memdc.SelectObject(bitmap);   
  13.         pDC->StretchBlt(m_rcFullScreen.left, m_rcFullScreen.top, m_rcFullScreen.right, m_rcFullScreen.bottom,
  14.                                         &memdc,
  15.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.left,
  16.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.top,
  17.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.right,
  18.                                         m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.bottom
  19.                                         ,SRCCOPY);   
  20.         DeleteObject(bitmap);   
  21.        
  22.         memdc.SelectObject(oldbitmap);  
  23.       memdc.DeleteDC();     

  24.        return TRUE;
  25. }
复制代码
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

7
 
路径有问题吧,或者你系统里没有指定的图片
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

8
 
路径没有问题的,因为系统还是正常显示两背景图片的,只是内存占用没有释放
getlasterror=6
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
在之前,有个调用出现错误error=1411,类不存在,估计是这个的问题,但是我不清楚有什么问题,参数都是正常获取的,返回值也是1,成功调用

  1. .Create(lPicture.sPictureName,
  2.                         WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
  3.                         rcIconRect,
  4.                         pWnd,
  5.                         dwControlID);
  6. error=GetLastError();
复制代码
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
虽然问题没有解决,还是给分
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
我知道,应该

   HBITMAP   bitmap = SHLoadDIBitmap(m_pMainShellPicture[PICTURE_BACKGROUND].sPicturePath);

    HBITMAP   oldbitmap;   
    CDC   memdc;   
    memdc.CreateCompatibleDC(pDC);           
    oldbitmap=(HBITMAP)memdc.SelectObject(bitmap);   
    //memdc.SelectObject(bitmap);   
    pDC->StretchBlt(m_rcFullScreen.left, m_rcFullScreen.top, m_rcFullScreen.right, m_rcFullScreen.bottom,
                    &memdc,
                    m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.left,
                    m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.top,
                    m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.right,
                    m_pMainShellPicture[PICTURE_BACKGROUND].rcSourcePicture.bottom
                    ,SRCCOPY);   
   // DeleteObject(bitmap);   
   
    memdc.SelectObject(oldbitmap);
    DeleteObject(bitmap);
      memdc.DeleteDC();     

       return TRUE;
}
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
我现在也遇到了这个问题,不知道哪里泄露~~~
楼主解决了的话拜托说一声。我的邮箱:kedamuyizhaoyang@126.com
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条
ADI 中国30周年,与你一起走过的那些精彩瞬间!
即日起-4月30日,阅读资料,您可以参与ADI真爱粉大考验,同时为ADI中国30周年送上祝福!我们将从参与者中随机抽取精美礼品送出!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表