CreateCompatibleBitmap菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 12:28:41
我用CreateCompatibleBitmap调试时第一次可以返回一个句柄,但是第二次却出错返回了一个零,不知道是什么原因.
请问大哥,GetLastError得到的值是0?
请问这个我已经怎么再查呢?
刚学之方面的编程,还请多指教,我加分了!

CurMemDC = CreateCompatibleDC(0) 'create a DC
If CurMemDC = 0 Then MsgBox "Create CurMemDC Error" & Error

'该函数创建与指定的设备环境相关的设备兼容的位图
hBitMap = CreateCompatibleBitmap(FrmSampleC.Picture1.hdc, pWidth, pScaleHeight) 'create a bitmap in memory (notice that width=screen width)
If hBitMap = 0 Then MsgBox GetLastError()

'该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象
SelectObject MemDC, hBitMap 'associate the device context with the memory bitmap

hPen = CreatePen(0, 0, vbWhite) 'create a pen solid, width of 1 pixel and yellow colour
SelectObject MemDC, hPen 'associate the DC with this pen

SetBkColor MemDC, vbBlack 'set background colour of all drawing functions that use pens to black

CreateCompatibleDC
CreateCompatibleBitmap
均创建了内存实体。
使用SelectObject 会将 bmp(或其它对象)选入dc中,返回旧的对象句柄hOldObj。使用完成以后要selectobject(hOldObj)恢复旧的设备对象。
在使用
DeleteObject,删除hNewBmp,hNewDc;

你的情况是未使用 SelectObject (hOldObj),恢复旧对象。

调用GetLastError来判断错误原因啊

第二次创建前必须用 DeleteObject 释放