Keith Sink, DirectX8 and Visual Basic Development (Sams, 2002)
It's 2003, now, and the world is slowly migrating to Microsoft's .NET standard (well, those who aren't using Linux, anyway). Here's a prediction, built on past observation of the process: companies who have been developing apps in Visual Basic for years will get copies of VB.NET, expecting a no-brainer transition from one to the other. Their programmers will import the programs, and immediately die of massive aneurysms at seeing the number of errors (especially the number of seemingly unfixable errors, if you happen to be programming in DirectX or any other API where classes expose other modules, which is verboten in .NET's "managed code" environment). This will leave the companies stranded and unwilling to move to .NET. They will be stuck behind those companies whose programmers have read DirectX8 and Visual Basic Development.
Keith Sink's book was written at the perfect time, and he often goes step by step through processes both writing code for VB6 and for VB.NET, making the book an invaluable resource for .NET VB programmers who are converting VB6 programs (or who are programming in an area where there are far more VB6 books than .NET books, which is, well, just about every area you can think of). Even if you're not planning on using DirectX, seeing the way things transition from one language to the other in one aspect of the language should give you a clue on how to make the transitions in other areas.
Sink doesn't mention at any point that there's actually a Microsoft.DirectX library in .NET. But then, neither does Microsoft's documentation. Nor does its upgrade wizard. (I only found about it after asking a random question on a message board.) So it's hard to fault Sink for something that, at the time he was writing, may have not been in the framework, or may have been considered an unsolvable problem. That aside, Sink's book is, for the reasons mentioned above, the best I've read to date about Visual Basic .NET at all. For such a specialized book to be so generally useful puts it in a class by itself. ****