I'd happily send you my project, but you have no email address visible. You can email/msn me if you don't want to display it. To run the executable, you also need DirectX 9.0c (make sure you get the latest 9.0c, because microsoft decided to release multiple versions with the same number!)
Also, I have tracked down one problem to do with why my draw function is not working:
void DrawBody(b2Body* MyBody)
for (b2Shape* MyShape = MyBody->m_shapeList; MyShape; MyShape = MyShape->m_next)
This is called for every shape in a world.
When (in debug mode) I step into the for loop, MyShape is not equal to MyBody->m_shapeList, even though it was only just set. The odd thing is, that they are both valid pointers, and have identical member values, except for one. The type member is changed from a poly type to a long, seemingly random number! This means that the functions inside the DrawShape function are not called, because none of the cases are met by the type value. I'm no C++ expert, but surely that should work!