From my point of view exchaning the pointer would be the easiest solution and quite frankly I still do not understand why you want to avoid that.

Have you thought about copying the image data over to the bitmap with bmap_blit? http://www.conitec.net/beta/bmap_blit.htm


Always learn from history, to be sure you make the same mistakes again...