Blog
Microsoft Visual C++ 7
Date: 18/10/2004
Microsoft's Visual C++ 6 is a rare treasure in the software world. It's fast, flexible, easy to use and has hardly any faults whatsoever. It's in fact one of my fravorite applications, and I spend a lot of time using it so I should know. So even when it does something annoying I'm very forgiving due to it's good behaviour on the whole.

Now recently I had the misfortunate of having to actually use Visual C++ 7 (VC7) in earnest for the first time. And man I was shocked at how far such a almost perfect IDE/compiler had fallen in just one major version release. VC7 manages to disappoint at lots of levels, and I can't see myself ever moving to it. Maybe I'll just skip 7 and wait for 8 (or 9 or whenever they get it right again).

First up I imported my VC6 project and built it... well tried to build it. You see they changed all the hotkeys for everything. Ok ok you can go and select "VC6 Hotkeys" in the settings somewhere to map them all back again but why change it? Why WHY WHY! It worked fine before and change for change's sake is plain dumb.

Ok, take a deep breath Matt. It's just key bindings. Next I try and link an application with a DLL generated in VC6. Doesn't work. Or maybe you need to know some "voodoo" to get it to work. Oh well time to upgrade all the projects to VC7.

Then it starts bitching about unresolved externals, because I exported some template class in the DLL. Ok ok fine.. don't export the class and it works. But why did that work in VC6 then? Why WHY!

Now it seems if you use "Multithreaded DLL" you also need a 337kb MSVCR70.dll in your applications distro, blowing out the download size. Grrr.

Ok so I need to change all 23 vcproj files to "Multithreaded DLL" instead of "Multithreaded". This is easy I say to myself (Que peanut gallery: snicker snicker). I'll just select all of the projects at once and edit the setting all in one fell swoop like in VC6. Um, No. You have to open every proj settings separately and change the setting. Argh, stupid stupid stupid.

And now that I'm in the swing of it, lets try and clean one project... opps the clean just cleaned ALL the projects. Thats not annoying at ALL!

Ok rebuild them all. Hmmm, compile is nice and quick. But the "make" functionality that checks for changes and rebuilds the required parts of the projects is sooooo slllllooooowwwwww II'mmmmmm faaaaalllllllliiiinnnnngggg aaassssslleeeeeppp. Bloody hell, how does anyone get anything done!

Oh well what can you do? It's like a Microsoft product.. and they are world champions at ignoring customers. Anyway I was building and fixing the code... just doing my normal coder type stuff and I was wondering whether I could get to the definition of a symbol easily. Oh look a "Go To Definition" menu item. Excellent. The symbol "blah" is not defined. Hell it is! It compilies doesn't it! Stupid. VC7.

And finally I did get the impression that everything is just a little sluggish in VC7. The menus, the dialogs, the time it takes for windows to open, the startup time, the time to paint the windows. It's all just slower than VC6, like everything has been spray painted with a "slow gun". It also has this charming trait of randomly locking up for a few seconds every now and then FOR NO REASON AT ALL. Which of course I LOVE. The end result feels unfinished and cheap.

All I can say is "Dot Net. You Bet... ter not make me use it".
Comments:
MD
29/10/2004 8:43pm
Well, VC6 wasn't that great either... at least the IntelliSense function seems to be working a *lot* better in VC7.1.... but VC7 is indeed very slow compared to VC6. As a Java programmer I work a lot with Eclipse too, just take a look at it's capabilities: refactoring, very good code completion, and 'Quick Fix': if you forgot to catch an exception, Eclipse will highlight the call and just by pressing Ctrl-1 Eclipse generates a Try/Catch-block for you...

I'm seriously considering the possibility of using Eclipse for C++ development. There is a project on eclipse.org (called 'CDT') that's working on this...
Norm
24/01/2006 8:51pm
Hi am having exaclty the same reflexion today. I always thought that VC6 was the almost perfect application, and was even anxious to try VC7 to see how better it would be. $#@%%... things that were lightning fast to do before are now so complicated and counter-intuitive, it's unbelievable. But the worst of all came up when I was trying to add a simple button in a dialog that derived from a class, and a class, and a class, then from CWnd. Because there are many derivations (probably), I can't add event handlers for that button because it doesn't see my dialog as a CWnd class based. Will I have to do all the work manually? Hope my manager is ready to stretch that deadline. That problem is also obvious and related, when I try to invoke the "Go to definition" command for some classes that are not directly MFC and I get "Symbol xyz is undefined". As you said, stupid VC7: it compiles, how can't you find it now!

If ever you find some solution, please advise me.
Thanks,
Norm
 
Reply
From:
Email (optional): (Will be HTML encoded to evade harvesting)
Message:
 
Remember username and/or email in a cookie.
Notify me of new posts in this thread via email.
BBcode:
[q]text[/q]
[url=link]description[/url]
[img]url_to_image[/img]
[pre]some_code[/pre]
[b]bold_text[/b]