- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
无论我多么努力地寻找和尝试,我都找不到这段代码泄漏的原因。实际上,我不确定泄漏,但每次使用这段代码时 GDI 对象的数量都会增加。
HBITMAP hBmp;
hBmp = CreateDIBitmap(dc, &stBmpIH, CBM_INIT, m_pBitmapData, m_pBitmapInfo, DIB_RGB_COLORS) ;
Bitmap *pBMP = NULL;
HPALETTE hPal = NULL;
Color col = 0;
pBMP = Bitmap::FromHBITMAP(hBmp, hPal);
if (m_bFlip)
{
pBMP->RotateFlip( Rotate90FlipXY );
pBMP->GetHBITMAP(col,&hBmp);
m_bFlip = FALSE;
}
else
{
pBMP->RotateFlip( RotateNoneFlipX );
pBMP->GetHBITMAP(col,&hBmp);
}
delete pBMP;
我用工具检查了 GDI 对象,发现 HBITMAP hBmp 是泄漏的对象。我应该如何删除它?
DeleteObject 无效。
谢谢
最佳答案
You are responsible for deleting the GDI bitmap and the GDI palette. However, you should not delete the GDI bitmap or the GDI palette until after the GDI+ Bitmap object is deleted or goes out of scope.
仅仅删除Bitmap
对象是不够的,之后还需要在hBmp上调用DeleteObject
。
关于c++ - HBITMAP 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957730/
我认为标题非常具有解释性,但这里更详细地说明了我正在尝试做的事情。基本上就是说我在内存中加载了一个BITMAP。 我想从中提取 BITMAPINFOHEADER 并将其添加到我的数据包结构中,该结构将
例如,如果我使用 LoadImage() 从线程 A 中的文件加载位图,我可以在线程 B 中使用返回的 HBITMAP 吗? 最佳答案 是的,可以,但请记住,一次只能将位图选择到一个 DC 中。如果您
我将桌面屏幕截图创建为位图文件。 在 win32 C 中降低这个大图像文件(~3 MB)的分辨率的最佳方法是什么? 我想通过网络发送它,所以文件应该更小。 最佳答案 使用StretchBlt调整位图大
无论我多么努力地寻找和尝试,我都找不到这段代码泄漏的原因。实际上,我不确定泄漏,但每次使用这段代码时 GDI 对象的数量都会增加。 HBITMAP hBmp; hBmp = CreateDIBitma
我有一个 ID 为 PNG 文件的资源 ID_IMAGES。该资源是一个图像数组,大小相同 (16x16)。我想弄清楚是否可以提取这些图像中的任何一张并从中生成 HBITMAP。 我在网上四处寻找,但
我想使用 CreateBitmap() 从一个简单的 unsigned char 像素缓冲区(每个像素 3 个字节)创建一个 HBITMAP 对象这…… HBITMAP hbm = CreateBit
我需要 C++ 代码从一侧获取 HBITMAP 并通过套接字发送它,在另一侧接收并再次使其成为 HBITMAP。 必须快速有效 如果更舒服,用GDI+位图 最佳答案 那是行不通的! 您需要做的是使用
我有一个像素数组,我需要将其转换为 HBITMAP 以便在窗口中显示它。我尝试使用 CreateDIBitmap() 但我没有 BMP header 。我尝试根据 MSDN 文档手动构建它们,但这没有
我有一个应用程序可以从数据库中加载一些 blob 数据,这些数据可以表示各种位图和图标的 png 格式或原始二进制数据。这被存储在 std::vector 我正在使用 CImageList 对象在 T
如果我有一个名为 bitmap 的 BITMAP,如何将其转换为 HBITMAP? 到目前为止我已经尝试过: HBITMAP hbm = (HBITMAP)&bitmap; //doesn't wor
在大快捷方式中,我正在尝试编写程序,该程序通过 NamedPipe 位图从另一个应用程序接收到的位图绘制位图。 我将分别发送 BITMAPINFO 结构和从 GetBitmapBits 函数获得的位图
我先道歉;我是 c 的新手,我真的不知道自己在做什么。 我正在尝试使用 Windows 7 和 c 捕获和显示屏幕截图。我知道这听起来很愚蠢,最终我会在不同的程序中需要这些功能中的每一个,捕获屏幕的那
如果给定了 HBITMAP 指针,并且我的应用程序是控制台应用程序,我如何从 hbitmap 获取图像字节。 我尝试使用需要诸如 HDC 之类的参数的 GetDIBits,但我无法获得。 编辑: 我从
我在屏幕上显示位图时遇到问题。当我编译并运行不显示任何内容时,尝试逐步调试,发现下面的代码是问题所在。 HBITMAP hbm = (HBITMAP)LoadImage(hInstance,
我正在尝试为给定的 jpg 图像创建一个 avi 文件。我正在使用库读取 jpg 并为其准备 hbitmap。最后我添加它来创建 avi 文件。但我最终的 avi 文件包含倒置图像。我在 bitmap
我正在创建一个实用程序,它使用全局 Hook 将一些(用户可自定义的)图标绘制到桌面上的其他窗口上。由于位图对象是特定于进程的,因此在绘制它们之前,我在每个进程中为这些图标创建了单独的 HBITMAP
我有一个加载具有透明背景的图像的应用程序,然后我使用 StretchBlt 将其调整为所需的大小,使用 SetStretchBltMode 设置 HALFTONE (我尝试使用其他模式,在保持透明度不
您好 Stack Overflow 用户。看来我没有在以下代码中正确使用 CreateCompatibleBitmap(): #include using namespace std; int ma
我的环境: win32 视觉 C++ directx 我需要将另一个应用程序的面部映射到我的应用程序的纹理。 例如,我的 Internet Explorer 屏幕出现在我的 DirectX Cube
我有一个 HBITMAP,它是使用 Excel Interop 的 CopyPicture 方法创建的。出于某种原因,这会在图像的顶部和左侧边缘放置一个灰色边框,即使它们不是电子表格的一部分。有人能告
我是一名优秀的程序员,十分优秀!