|Okay so when you're calling:
BitBlt(global_hdc, x, y, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
Just change those x and y values each time the function is called.
Then check them using:
if (x < rt.left)
blab blah, bounce right
if (y > rt.bottom)
blah blah, bounce up
Couple other tips:
Do not call LoadImage, CreateCompatibleDC, DeleteImage, DeleteObject, in your DrawBitmap function.
Load the image into a global variable, create the compatible DC as a global, and keep re-using both of those rather than re-allocating memory each frame - you will probably get a crudload of lag if you keep re-creating and loading your images and device contexts every frame, depending on how large and what type of bitmap you're loading.
Storing the double-buffered device context as a global variable will mean that you're going to want to clear your created device context using FillRect each frame so that remnants of the old drawings do not get left behind.