GDI绘图 双缓冲贴图 电脑死机

绘图的时候使用了双缓冲贴图 然后自己定义了一个透明贴图的函数DrawTransBitmap,贴图成功了,但是程序一运行内存就飞速增长。不关的话马上就死机了,小白一枚 求各位大神帮忙 万分感激


            case WM_PAINT:
                hdc = GetDC(hwnd);
                mdc = CreateCompatibleDC(hdc);
                bufdc = CreateCompatibleDC(hdc);
                bufdc2 = CreateCompatibleDC(hdc);
                GetClientRect(hwnd,&rect);
                GetObject(hbm1,sizeof(BITMAP),&bm);
                xlength = rect.right - rect.left;
                ylength = rect.bottom - rect.top;


                SelectObject(bufdc,hbm1);
                hbm3 = CreateCompatibleBitmap(hdc,xlength,ylength);
                SelectObject(mdc,hbm3);
                BitBlt(mdc,0,0,2*bm.bmHeight,2*bm.bmWidth,bufdc,0,0,SRCCOPY);


                SelectObject(bufdc2,hbm2);
                GetObject(hbm2,sizeof(BITMAP),&bm);
                DrawTransBitmap(mdc,300,500,0.125*bm.bmWidth,0.125*bm.bmHeight,bufdc2,300,0,RGB(255,255,255));



                BitBlt(hdc,0,0,2*bm.bmHeight,2*bm.bmWidth,mdc,0,0,SRCCOPY);
                DeleteDC(hdc);
                DeleteDC(mdc);
                DeleteDC(bufdc);    
                break;

这个是代码