Win32 C ++可以重用“旧位图”吗?

时间:2014-03-21 19:13:50

标签: c++ winapi bitmap hdc

我想知道在使用HDC时,当我选择回原始位图时,我可以再次使用它吗?像...

HBITMAP hbmOld;

// FIRST
hbmOld = (HBITMAP)SelectObject(hdcMem, bitmap.hbmItemOverlay);    
Rectangle(hdcMem, 0, 0, MAP_WIDTH*BLOCK_SIZE, MAP_HEIGHT*BLOCK_SIZE); 
SelectObject(hdcMem, hbmOld);

// SECOND
stockBrush = GetStockBrush(BLACK_BRUSH);
hbmOld = (HBITMAP)SelectObject(hdcMem2, bitmap.hbmMap);
Rectangle(hdcMem2, 0, 0, bitmap.bmMap.bmWidth, bitmap.bmMap.bmHeight);
SelectObject(hdcMem2, hbmOld);

我想知道这是否有效。编译很好并且有效,但我想知道这样做是不是很糟糕的编程习惯呢?

1 个答案:

答案 0 :(得分:2)

在我看来,这似乎完全没问题。

您还可以100%确定地测试内存泄漏。

我个人使用GDIView来执行此操作。关键是句柄数量在最后一列是恒定的。如果您在使用它时需要帮助,请发表评论。如果其他人可以建议更好或更容易使用替代方案,我会欢迎。

最好的问候。