Hmmm, that looks odd.
Are the commands
bmap_load(MYBMP, "hello.bmp", 0);
bmap_lock( MYBMP, 0);
inside a function or not, cause they dont look like it, and they need to be.
If they're not, it means MYBMP is still empty, causing the error. Try puttin them into the
start of function new_box().
If they are inside a function already, is it getting to that point before new_box() is executed?
Let us know and I'll turn my brain back on.
Another thing to try (whether I was right or wrong), try declaring the BMAP directly.
BMAP* MyBmp = "hello.bmp";
leave it
where it is though, and drop the bmap_load line.
Still move the map_lock into new_box() too.