在 MFC(Microsoft Foundation Classes)中,CGdiObject 类提供了 Detach 方法,用于分离 GDI 对象句柄,使 CGdiObject 对象不再管理该句柄。以下是该方法的原型:
HGDIOBJ Detach();

该方法返回被分离的 GDI 对象句柄。一旦调用了 Detach 方法,CGdiObject 对象将不再拥有该句柄的所有权。这可以用于将 MFC 对象和 GDI 对象分开,以便在不再需要 MFC 对象时,可以手动释放 GDI 资源。

使用示例:
CBitmap myBitmap;
HBITMAP hBitmap = LoadBitmap(NULL, MAKEINTRESOURCE(IDB_MYBITMAP));

if (hBitmap != NULL)
{
    myBitmap.Attach(hBitmap);

    // 使用 myBitmap 对象进行其他操作

    // 分离 GDI 对象句柄,以便手动管理 GDI 资源
    HBITMAP hDetachedBitmap = myBitmap.Detach();

    // 在不再需要 MFC 对象时,手动释放 GDI 资源
    if (hDetachedBitmap != NULL)
    {
        DeleteObject(hDetachedBitmap);
    }
}

在上面的示例中,Detach 方法被用于将 CBitmap 对象所附加的 GDI 对象句柄分离,然后手动释放了 GDI 资源。这在某些情况下可以用于更精细地控制资源的释放。


转载请注明出处:http://www.zyzy.cn/article/detail/18035/MFC/CGdiObject