I am wandering if I should use a CComPtr ccptr_d2d_image whenever I call GetTarget(). For example:
void DrawSomething (ID2D1DeviceContext *dvctxt, ID2D1Bitmap1 *arg_bitmap1)
{
CComPtr<ID2D1Image> ccptr_d2d_image = NULL;
// save the current target
dvctxt->GetTarget(&ccptr_d2d_image);
dvctxt->BeginDraw();
dvctxt->Flush(); // clear any previous errors on the tgt
dvctxt->SetTarget(arg_bitmap1);
// draw something on the arg_bitmap1
dvctxt->EndDraw();
// restore the previous target
dvctxt->BeginDraw();
dvctxt->Flush(); // clear any previous errors on the tgt
dvctxt->SetTarget(ccptr_d2d_image);
dvctxt->EndDraw();
} // Com Pointer goes out of scope and is automatically released