Please disregard the question. I found that it was operator error with CImage use.
If you use the CImage assignment operator, CImage a = CImage b, it merely copies the HBITMAP value from b to a. But when b is destroyed, it destroys the HBITMAP as well. But, a has no idea this has occurred and any subsequent operations will result in exceptions being generated.
The proper way to assign from one CImage to another is to use CImage::Attach and CImage::Detach functions. This only moves the HBITMAP from one class to the next, but prevents it from being shared between two classes.