为什么不需要类型转化 h可以接受HBITMAP类型参数HGDIOBJ SelectObject(HDC hdc,HGDIOBJ h)// 不需要类型转
为什么不需要类型转化 h可以接受HBITMAP类型参数 HGDIOBJ SelectObject(HDC hdc,HGDIOBJ h)// 不需要类型转化 h可以接受HBITMAP类型参数 DeleteObject(HBM);//删除位图 //例子2对吗????例子1释放对吗???
HBITMAP hOldHdc=(HBITMAP)LoadImage(NULL,".//res//u.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); hOldBitmap = (HBITMAP)SelectObject(hdcmen,hOldHdc); //BitBlt(hdc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right, ps.rcPaint.bottom, hdcmen,0,5, SRCCOPY); ::SelectObject(hdcmen, hOldBitmap); ::DeleteDC(hdcmen); CDC MemDC; HBITMAP HBM;//1、创建一个位图对象,下面进行初始化 HBM=(HBITMAP)LoadImage(NULL,L"C:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); //载入位图 BITMAP bitmap; GetObject(HBM,sizeof(bitmap),&bitmap);//获得位图信息 MemDC.CreateCompatibleDC(NULL); //2、创建兼容DC SelectObject(MemDC,HBM);//3、选入位图至内存DC DeleteObject(HBM);//删除位图 //将内存DC中的位图复制到客户区DC中 BitBlt(dc,0,0,bitmap.bmWidth,bitmap.bmHeight,MemDC,0,0,SRCCOPY);//4、显示位图[最优解释] 1.可能会造成资源泄露,最好加deleteobject(hbitmap),原因见注.
2.可能Bitmap与PEN有些不同,可以直接删除,因为你一般不会再去在hdcmem上用bitmap改写什么,却可以用Pen划线之类,那么也是正确的.
注:
MSDN说Bitmap删除只有在LR_SHARED才是非法的,我认为相当于深度copy和浅层copy的关系.selectobject(hbitmap)是深度copy,所以我认为删除安全.
[其他解释] 都是HANDLE类型,typedef而已
MSDN Remarks
Do not delete a drawing object (pen or brush) while it is still selected into a DC.
[其他解释] 我原来也觉得这个怎么可以接受不同的参数
CBrush br(RGB(128,128,128)); CBrush*pbr = pDC->SelectObject(&br); CPen pen(0,1,RGB(128,128,128)); CPen*ppen = pDC->SelectObject(&pen); 原来是一堆的重载函数。
[其他解释] 第一个例子 释放资源对吗???
第二个例子 释放资源对吗????
引用: 都是HANDLE类型,typedef而已 MSDN Remarks Do not delete a drawing object (pen or brush) while it is still selected into a DC. [其他解释] 引用: 第一个例子 释放资源对吗??? 第二个例子 释放资源对吗???? 引用: 都是HANDLE类型,typedef而已 MSDN Remarks Do not delete a drawing object (pen or brush) while it is still selected into a DC. 都不对
1.hdcmem不知从何而来,
An application must not delete a DC whose handle was obtained by calling the GetDC function. Instead, it must call the ReleaseDC function to free the DC.
2.
Do not delete a drawing object (pen or brush) while it is still selected into a DC.
[其他解释] hdcmen 是HDC 狮哥有正确的例子吗????
引用: 引用:第一个例子 释放资源对吗??? 第二个例子 释放资源对吗???? 引用: 都是HANDLE类型,typedef而已 MSDN Remarks Do not delete a drawing object (pen or brush) while it is still selected……