Can anyone recommend me a good book to learn DirectX using C++ (focusing mainly on Direct3D but it would be good if it covered DirectSound, DirectInput etc).

I've got a good knowledge of how to program (including OO), limited knowledge of C++ and very limited knowledge of DirectX (done a few basic tutorials on the net etc).