The sample code provided illustrates how you can do 2D blits in DirectX 9. Starting from DirectX 8, Microsoft removed all 2D code from DirectX. The advice that they gave people wanting to use the 2D features was that those people should use DirectX 7 whenever they wanted to use the 2D functions. Of course, that was not an option if you needed the functionality provided in DirectX 8 and DirectX 9.
So while I was in the technical beta testing team for DirectX 8, I decided to write some sample code which would show how you can get direct access to the D3D surfaces and do 2D blits on them. You would have to write all the 2D functions yourself, but using my code as a starting point, that would be easy to do. In addition, my code also illustrates how to do conversion between the various surface formats introduced in DirectX 8 and 9.
Of course, when direct access to the surfaces is not needed, you would be better off using the standard D3D blitting routines, which are hardware accelerated and as a result are faster than the software 2D blits in my code.
Using the code
A sample project is provided in the downloadable ZIP file which shows how to use the code provided. Please see the readme.txt file also included in the ZIP file, for more information. If you have questions, feel free to email me. For updates or other code samples, visit my homepage.