m_hBitmap = CreateBitmap(m_stMapHeader.cx, m_stMapHeader.cy, 1, 8, buff);
CStatic* pMap = (CStatic*)GetDlgItem(IDC_MAP);
pMap->SetBitmap(m_hBitmap);//改变buff缓冲一些数据 从新建立个位图
m_hBitmap = CreateBitmap(m_stMapHeader.cx, m_stMapHeader.cy, 1, 8, buff);
HBITMAP h = pMap->SetBitmap(m_hBitmap));
CloseHandle(h); //这句发生异常提示 :无效的句并
                 //但是查看句柄值却是正确的 就是原来的位图句柄

解决方案 »

  1.   

    不用释放的。没有必要。
    好像也没有必要CloseHandle啊。这不是释放吧。释放应该用DeleteObject(h);
      

  2.   


    楼上的两位大虾 谢谢了 我能错了应该这样 DeleteObject(h)但是为什么不用释放呢?这也是个gdi对象啊 ,是CStatic这个类帮我释放了吗?
      

  3.   

    如果要释放GDI对象请用DeleteObject(hHandle);如位图句柄,设备上下文句柄,字体句柄等
      

  4.   

    DeleteObject(h);CStatic 这个类不会帮你释放
      

  5.   

    DeleteObject(h)应该可以释放啊。你是说用DeleteObject(h)也会报错?如果h不删除,也不会发生内存泄漏。但如果想及时回收这部分空间,当然是及时删除比较好。
      

  6.   

    zhucde(【風間苍月】)(MS_MVP) 和happyparrot(快乐鹦鹉)差点害死我用DeleteObject可以释放 当然CloseHandle释放不了 这个是释放内核对象的
    两位根本没仔细看我帖子 还是mvp 唉 也太不负责了多亏了 laiyiling(最熟悉的陌生人)的回复 不然我肯定信了那两个"大虾"的话,这个bug是永远留在程序里了