} } }

    GDI对象选入多个设备景象导致显示失足的题目

    添加时间:2013-6-16 点击量:

    比来才开端写图形化的法度。


    不禁感慨道固然也有很多不足,Windows作为一个操纵体系是多么的强大!当然,这也导致写法度很麻烦,尤其是关系到unicode编码的时辰。


    今天碰到的题目是关于GDI对象的,代码如下:



     1 void Cls_OnPaint(HWND hDlg)
    
    2 {
    3 PAINTSTRUCT ps;
    4 HDC hDc, memDc;
    5 HBITMAP hOldBitmap;
    6
    7 hDc = BeginPaint(hDlg, &ps);
    8
    9 SetStretchBltMode(hDc, COLORONCOLOR);
    10 memDc = CreateCompatibleDC(hDc);
    11 //hOldBitmap = SelectBitmap(memDc, g_hBitmap);
    12 StretchBlt(hDc, 2006640480, memDc, 00, g_Camera.iStreamWidth, g_Camera.iStreamHeight, SRCCOPY);
    13 SelectBitmap(memDc, hOldBitmap);
    14 //DeleteDC(memDc);
    15
    16 EndPaint(hDlg, &ps);
    17 }


    可以看到最初我并没有将内存设备景象删除,也没有将位图与内存设备景象的接洽断开。


    源法度运行时界面对峙静止,没有遵守我的设显示动态的视频。


    经过对比,起首想到的是内存设备景象没有删除,这导致GDI对象的泄漏,因为每次会新建一个。


    将内存设备景象删除后法度运行正确,但推敲每次我都将位图选入内存设备景象后再画图,理论上应当可以显示动态视频,于是想到题目的底子不在此。


    经测试后发明,将位图与内存设备景象断开后(即从头选入旧的位图),即使内存设备景象泄漏也可以正确显示。是以首要的题目出在:GDI对象选入了多个设备景象!

    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: