CStatic显示位图!反复显示多次后,就显示不出来了,是空白,发现内存占用很多,如何解决?

解决方案 »

  1.   

    98下吧?一定是有GDI对象使用了没释放,我也遇到过。就好像这样:CFont font;
    font.CreateFontIndirect(&lf);
    CFont* pOldFont=(CFont*)dc.SelectObject(&font);
    ...
    dc.SelectObject(pOldFont);//我上次就是有个CStatic派生的类里面不小心漏了这句,结果在2K下没事,但在98下运行时间稍微长点,整个程序里面的那些位图句柄一大半就无效了(用SelectObject返回NULL,还有些CFont也是这样),帖上去就是白的了。我可是花了两天才找出这个该死的错误。估计当时写那段代码的时候晕掉了。:)
      

  2.   

    顺便说一句,不一定就是那个STATIC或者那个位图有关的代码有问题,整个程序里面任何一个地方犯那样的错误都会那样。你得全面检查。
      

  3.   

    谢谢各位的提示!
    我在一的定时器里,不停的变换背景图,用CStatic.SetBitmap(),一定时间后CStatic的图就显示不出来,我查看内存使用情况,发现变的很大!if(change ==1)
    {
        m_map.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1)));
        change =2;
    }
    else
    {
        m_map.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2)));
        change =1;
    }