作者:简单式赞美 | 来源:互联网 | 2023-05-17 19:08
一个CBitmap的对象,已经bitmap.LoadBitmap(IDB_BITMAP1);之后怎么在和IDB_BITMAP1分离啊?我用bitmap.LoadBitmap(IDB_BIT
一个CBitmap 的对象,已经 bitmap.LoadBitmap(IDB_BITMAP1);之后怎么在和IDB_BITMAP1分离啊?
我用bitmap.LoadBitmap(IDB_BITMAP2)的时候就出错,怎么办啊?
19 个解决方案
bitmap.LoadBitmap(IDB_BITMAP1);
....
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP2)
试试不要用 Detach() ,
Attach Detach 这些,是让这个类与对应的句柄相关时用的.
例如用API建了个 HBITMAP,那可以用 CBitmap::Attach(HBITMAP)
CBitmap::Detach(HBITMAP) 意思是想在这个CBitmap 释构的时候,不要再去释放这个CBitmap里的m_hObject资源句柄.
不好意思,上面bitmap.Detach(); --》bitmap.DeleteObject();
按照您的方法,好了,不过换图的时候屏幕闪烁,于是我想是不是那个内存DC没有定义成成员变量的事。我把
CDC dcCompatible;改成了成员变量,结果一运行程序就出错,咋回事呢?
楼主,你会不会是因为连续2次调用了dcCompatible.CreateCompatibleDC(pDC);这个,
所以出问题了?
谢谢啊,终于解决了,哈哈,不过,屏幕还是像刚才一样闪烁呢~服!
楼主,你是如何让屏幕重画的?因为你现在是对整个屏幕上图,所以不用有擦除的动作,直接画就行,会不会是你多了擦除的动作,所以闪?
谢谢finder_zhang大哥,哈哈,原来Invalidaate()干了挺多事呢,我之前是调用它的,我说怎么老闪烁呢!!!!