okay, one Ramification of option number 1 just occured to me:
If the com class is destroyed before the calling app uses the handle to create the bitmap then I guess that should cause an exception since the pointer is gone.
So, what about forcing the calling app to pass an hDc for use?