The online racing simulator
MS Visual C++ 2010 express or 2003 Standard & direct2d
ok it's been a while since I played a bit with C(++) and directx but interest is creeping back again and I'm looking at what environment to install.

What I'm interested in :
-learn to create GUI's without using Windows Forms and all the usual facilities
-is the above actually worth it? Is it a simple choice of how advanced do I want the gui to become or how i want it to look?
-see if direct2d is the way to go forward, or should I stick to GDI(+)?
-building a video tool for LFS. I've several ideas for this that I don't see in any other similar applications and I think these would help making nicer lfs videos, with more control over what you shoot.

What I don't know :
-can I use an older MS Visual C++ 2003 (.net) for this purpose?
-Will it work with all the new directX stuff and new versions of .NET? (if i choose to use .net) Or ...
-is the better option to get Visual C++ 2010 Express? Can that deal with directX?

Actually I think it doesn't matter - the older 2003 should do this job fine me thinks. Isn't it so that the newer IDE's have added features that are more specific to alternate platforms, like mobile and web? I'm not interested in those at all atm.
The reason I don't just install the newer express one is because i bought the older one a long time ago and I wonder if its core programming features are slightly better than todays features on Express. But I don't really know .. hence this post! duh
Off the top of my head:
  • Latest versions of DirectX need VS2008 or above
  • Latest versions of MFC requires VS2008 or above
  • VS2003 supports .NET 2.0, need VS2005 for 3.0, VS2008 for 3.5, VS2010 for 4.0
  • VS2003 should support Win32 OK, I'm not 100% sure about this. I don't think it's changed much for a while.
I'm not sure exactly what VS2003's feature set was, but certainly VS 2010 Express' core programming features are vastly improved. The main things missing from the Express versions are support for working on teams, unit testing support, plugins, plus a few other kinda "high-end" features. The core coding experience though is very similar to the premium version.

Edit: And yeah, VS C++ Express supports DirectX. The only really annoying thing missing from VS Express is a resource editor, but you can find free ones online.
It also depends on where your deploying too. VS03 Can deploy to WinXP, but you'll need 08 to deploy to Vista and VS10 to deploy to Win7.
If you're not totally set on putting up with C++, and as you've mentioned possibly using .NET components, it might be worthwhile to consider using C# in conjunction with SlimDX instead.

In short, SlimDX is a thin wrapper framework for accessing DirectX through C# and is actively supported and updated by its creators to keep up with latest DirectX developments, unlike say, Managed DirectX which has been completely abandoned years ago, or XNA which only supports up to DX9 and has a more limited featureset due to being intended for XBox360 development. There has also been at least one commercial release of a SlimDX based game that I know of, so it's not a complete underdog

Unless using C++ is an integral part of your endeavour (if it is, you may ignore the rest of this post), using C# would allow you to avoid lots of unnecessary hurdles and let you concentrate on actually implementing the features/logic of whatever you're planning to do. Besides that, Visual Studio's support for C++ is, while not bad, certainly nowhere near the level of its support for C#, simply due to how difficult C++'s archaic language design makes things for IDE developers.

Performance shouldn't be a concern either - you're hardly going to be developing the next CryEngine anyway - jitted CLR code is plenty fast, as is the GC. Of course you have to look for different performance gotchas in such an environment, but from my experience with an (admittedly quite simple) 2D space shooter style game it's hardly the language itself causing the problem. With modern CPUs it's not about raw instruction counts anyway, rather it's about getting the data where it needs to be in a timely manner. Cache misses forcing you to access the (in comparison) agonizingly slow RAM are a much bigger concern than not having minute control over the generated assembly; a bad algorithm is going to be slow, no matter whether it's generated through the CLR or by yourself.

So anyway, that's my two slightly off-topic cents on this matter

E: Btw, there's no reason not to have VS 2003 and 2010 installed side by side - you're not breaking anything by doing so.
Quote from Dygear :It also depends on where your deploying too. VS03 Can deploy to WinXP, but you'll need 08 to deploy to Vista and VS10 to deploy to Win7.

What do you mean by "deploy"?
One can use any compiler / ide to create software that works on all versions of Windows. It's the program components that decide on which versions of Windows it can run?
Eg. LFS isn't coded in VS10, but it works fine on Win7, and any other version for that matter.

Another example : If I'd choose to use Direct2D, then it would make the application work only on Vista and up.

Another example : If someone chooses to write a program that uses unicode internally, it will only run on win XP and up.

So I'm curious what you mean with deploy.
Quote from AndroidXP :If you're not totally set on putting up with C++, and as you've mentioned possibly using .NET components, it might be worthwhile to consider using C# in conjunction with SlimDX instead.

In short, SlimDX is a thin wrapper framework for accessing DirectX through C# and is actively supported and updated by its creators to keep up with latest DirectX developments, unlike say, Managed DirectX which has been completely abandoned years ago, or XNA which only supports up to DX9 and has a more limited featureset due to being intended for XBox360 development. There has also been at least one commercial release of a SlimDX based game that I know of, so it's not a complete underdog

Unless using C++ is an integral part of your endeavour (if it is, you may ignore the rest of this post), using C# would allow you to avoid lots of unnecessary hurdles and let you concentrate on actually implementing the features/logic of whatever you're planning to do. Besides that, Visual Studio's support for C++ is, while not bad, certainly nowhere near the level of its support for C#, simply due to how difficult C++'s archaic language design makes things for IDE developers.

Performance shouldn't be a concern either - you're hardly going to be developing the next CryEngine anyway - jitted CLR code is plenty fast, as is the GC. Of course you have to look for different performance gotchas in such an environment, but from my experience with an (admittedly quite simple) 2D space shooter style game it's hardly the language itself causing the problem. With modern CPUs it's not about raw instruction counts anyway, rather it's about getting the data where it needs to be in a timely manner. Cache misses forcing you to access the (in comparison) agonizingly slow RAM are a much bigger concern than not having minute control over the generated assembly; a bad algorithm is going to be slow, no matter whether it's generated through the CLR or by yourself.

So anyway, that's my two slightly off-topic cents on this matter

E: Btw, there's no reason not to have VS 2003 and 2010 installed side by side - you're not breaking anything by doing so.

I'll be sure to have a look at SlimDX. I agree with you basically, but I've been holding off on learning c++ properly for a long time now because I often quickly thought 'hmm but if i use that higher level language, i can save time', but then in the end I run into annoying bits. It's how I feel about Java for example. It's lovely that you can create applications that are cross platform compatible and everything's done quite easily. But the performance is horrible and interface design is ancient.
But ok .. I should really look at what the C# buzz is about. I'll believe it won't have such a performance impact; not like Java anyway, so hmm well, it might be nice. On the other hand it would mean that, once again, I'm holding off on learning c++. And I really want to be able to code some actually usable stuff with it and not just some 'fun experiment'

I sometimes feel like C++ is my ultimate mountain to climb. I want to do it, one day, but i keep taking routes around it, never really getting where I want to be. I'm avoiding the route that goes straight to the top, because it looks so steep
But really, is it so steep? Maybe for a complete beginner, but I've passed that stage a while ago now I'd like to think...
Quote from DarkTimes :Off the top of my head:
  • Latest versions of DirectX need VS2008 or above
  • Latest versions of MFC requires VS2008 or above
  • VS2003 supports .NET 2.0, need VS2005 for 3.0, VS2008 for 3.5, VS2010 for 4.0
  • VS2003 should support Win32 OK, I'm not 100% sure about this. I don't think it's changed much for a while.
I'm not sure exactly what VS2003's feature set was, but certainly VS 2010 Express' core programming features are vastly improved. The main things missing from the Express versions are support for working on teams, unit testing support, plugins, plus a few other kinda "high-end" features. The core coding experience though is very similar to the premium version.

Edit: And yeah, VS C++ Express supports DirectX. The only really annoying thing missing from VS Express is a resource editor, but you can find free ones online.

wouldn't be MS if they had not left out a really handy feature from a free product

Thanks, looks like I'll go for something new and stuff that 2003 box back into the closet for now.
Quote from Victor :I'll be sure to have a look at SlimDX. I agree with you basically, but I've been holding off on learning c++ properly for a long time now because I often quickly thought 'hmm but if i use that higher level language, i can save time', but then in the end I run into annoying bits. It's how I feel about Java for example. It's lovely that you can create applications that are cross platform compatible and everything's done quite easily. But the performance is horrible and interface design is ancient.
But ok .. I should really look at what the C# buzz is about. I'll believe it won't have such a performance impact; not like Java anyway, so hmm well, it might be nice. On the other hand it would mean that, once again, I'm holding off on learning c++. And I really want to be able to code some actually usable stuff with it and not just some 'fun experiment'

I sometimes feel like C++ is my ultimate mountain to climb. I want to do it, one day, but i keep taking routes around it, never really getting where I want to be. I'm avoiding the route that goes straight to the top, because it looks so steep
But really, is it so steep? Maybe for a complete beginner, but I've passed that stage a while ago now I'd like to think...

Please, learn C++ properly. It's always been my goal too and I've always been avoiding it, just because of the same reasons you mentioned. And if you do it, you will just push me one step closer to it too. It's what you want anyway. And in the end of the day if you do it the other way, you will probably think "ehh, I did it the lazy way again" and you won't be as happy as you would be otherwise.

Basically, you would be better example for me than anyone else in this forum, I think. I've wanted to learn it since I have started to get into this whole world of programming. And I never did it right.. -.-

ps: You can also see how I'm trying to stay away from C#. Posting 2 out of the 3 best projects I've ever worked on(all C#, obviously(obviously)). But it didn't have the impact I was hoping on.
Quote from AndroidXP :If you're not totally set on putting up with C++, and as you've mentioned possibly using .NET components, it might be worthwhile to consider using C# in conjunction with SlimDX instead.

For C# there is XNA too of course, but that's a complete game development framework, rather than a wrapper round DirectX.
Would you also be able to recommend a good (windows) C programmers forum and/or irc channel? Running into some (syntax?) things I just don't understand and could use a little interactive help with the basics.

FGED GREDG RDFGDR GSFDG