void CopyBitmap(HWND hwnd, HBITMAP* Dbmp, const HBITMAP* Sbmp)
{
char* bits = nullptr;
static BITMAP bm;
TCHAR Error[MAX_PATH];
GetObject(*Sbmp, sizeof(BITMAP), &bm);
unsigned bitsize = bm.bmWidthBytes * bm.bmHeight * bm.bmPlanes;
try
{
bits = new char[bitsize];
}
catch (const std::exception& e)
{
auto len = MultiByteToWideChar(CP_ACP, 0, e.what(), -1, Error, MAX_PATH);
Error[len] = '\0';
MessageBox(hwnd, Error, NULL, MB_OK);
return;
}
GetBitmapBits(*Sbmp, bitsize, bits);
*Dbmp = CreateBitmapIndirect(&bm);
SetBitmapBits(*Dbmp, bitsize, bits);
delete[]bits;
}
程序在WIN10下运行正常,win7下发现是复制DDB函数是空白的,高手指教?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-07-24 13:37关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这段代码是在创建一个基于位图的可变大小的Bitmap对象,并将从源位图中提取的位图数据复制到目标位图中。然而,在Win7系统上遇到的问题可能是因为目标位图的宽度或高度小于源位图,或者目标位图没有足够的内存来存储复制的数据。
以下是一些建议:
-
检查目标位图的尺寸是否足够大以包含源位图的所有像素。如果不够,尝试增加目标位图的宽度或高度。
-
检查目标位图是否有足够的内存来存储复制的数据。如果目标位图的内存不足以容纳复制的数据,可以考虑使用更小的目标位图,或者考虑使用其他方法来复制位图。
-
如果问题仍然存在,请检查代码中的错误处理部分,确保在出现异常时能够正确地显示错误信息。
-
如果上述建议都不能解决问题,请提供更多的关于您的环境和具体问题的信息,以便我为您提供更具体的帮助。
解决 无用评论 打赏 举报-