Overall this is an exceptionally well written book. The text is easy to read, and concise, though that's not to say you understand everything the first time you read it.
The code framework is also pretty good, the naming conventions are decent and the code is clearly written. The framework is consistent throughout the book, and uses inheritance and minor polymorphism which manages to hide a lot of the Direct3D / Win32 initialization, so once you are past these chapters you needn't concern yourself with this code again, and you can intend focus on the code that Frank is trying to explain.
The design is also very modular, a good example of this is found in Chapter 21: Exercise 4 where it asks you to integrate an Environment Mapped sphere for the sky, and Normal mapped water, into a scene which shows a Castle and trees / grass. This was pretty easy, as it just required shifting a few art / source files and tying some loose ends.
The book contains many exercises, a lot of which I found very helpful in understanding the material presented in the text and code samples, they give a good sense of accomplishment and I recommend them if you want to fully understand the concepts taught, and most are generally doable with a bit of research into the DirectX SDK, and rereading the text.
The text also does an excellent job of explaining key DirectX functions, and is usually a lot more approachable than the SDK. It also explains the use of the DirectX texture tool, and Terragen ( a free terrain generator, which is very easy to use)
For anyone looking to learn DirectX 9, HLSL, and the fundamental concepts behind games, then this book will serve as a solid foundation for those willing to take the time to read and understand it.