I noticed that many people are using MSVC to program... i know it has the best autocompletion, and directx support, but i don't think such features are enough to make such a difference.
I'm using Code::Blocks since i needed to program for other platforms besides gnu/linux (i used to program in anjuta and kdevelop before), and i think it's just the best IDE ever. The main feature is that its totally cross-platform, and you can make programs that looks really professional using something like wxWidgets as easy as in Delphi/Lazarus, and without changing any line of your code. The binary size problems can easily be workarouded using UPX, and the program will look native on any platform, it's just like a dream; it's like java without virtual machine and ugly graphics. (Personally i think java programs so unprofessional. CPU and MEM overload and very ugly widgets are a high price to pay for cross platform. If the language was a little simpler like Python etc. i think i would make sense, but java is complicated as C++.)
Even if Code::Blocks was Windows-only i would surely use it just to avoid painfull (very restrictive) licensing side-effects. Code::Blocks is simple, very updated, has a nice support community and i never had any problems with it, it's very easy and quick to setup any environment, and any experienced programmer will feel totally free to program.
MSVC is so complicated, looks like it wants to program for you... it has so many options that i don't even know what their names means.
However, there should exist a real advantage besides directx and autocompletion.
BTW... Some of the best programmers i ever met uses text editors to program, the other part uses emacs
PS: Other thing that i just don't understand is that some people uses DevCpp... i tried it a lot and i found C::B to be much superior in EVERY aspect.