I'm guessing yes. I don't do anything special with graphics, so GDI is still good enough for me. But if Direct2D is based on COM, then I'd say your deductions are correct.
Believe it or not, I spent about five minutes looking for that error this morning, but failed to find it. I remember very, very well what it was though. It just goes to show that anybody can make mistakes, even famous authors.
What it was, Troelsen had created an object on the stack, i.e., something like this ...
// program code
VC6 didn't crash on that for some reason, but Mingw did. When I looked at it, I saw he was calling delete on an auto object, which the compiler deletes automatically when it clears the stack after a function call.
About the first third of that book is a tutorial on COM basics, and is really good. The last two thirds are on ATL.