tags:

views:

954

answers:

7

I'm a C programmer with lots of server code experience (AIX, HPUX, some Linux) I need to write a GUI program for Windows (2000, XP, Vista, 7) which requires CAD-like drawing functions and lots of data entry forms (it's a specialised engineering app). I've written some Win32 code many years ago using Gupta SQLwindows (now Centura Builder). The bosses have decreed that it "must be" compiled code. My perception is that C+SDK could do the job but with considerable effort and that C# + Windows Forms would be more capable, but I'm a bit concerned about the .Net framework requirement.

Based upon your experiences, What would you suggest?

If .Net, which version? 2.0, 3.0, 3.5 ??

+1  A: 

If you don't want .NET, Qt + C++ is definitely the way to go; it certainly beats C and Win32. .NET still allows much faster development than even Qt though. Qt has the advantage of being fast and easy to deploy (no .NET requirement), and makes portability much easier (if you want to port to Linux or Mac).

Zifre
A: 

Depending on the complexity requirements of the CAD-like drawing, I'd go with C# + Windows Forms, or even more preferrably, C# + WPF.

WPF would make the drawing much, much cleaner than trying to do it in GDI. This is especially true if you're going to do some 3D "drawing", as you can do a lot of (simple) 3D objects directly in WPF. C# will make your GUI programming much more productive than trying to do it in C/C++ with the windows API directly (or even MFC).

Personally, the .NET requirement is minimal in my opinion, but that's really up to the powers that be in your organization...

Reed Copsey
WPF requires .NET 3.0, which Requires WinXP or above, so that counts WPF out (because the OP needs Windows 2000 support).
Ray
A: 

If it must be compiled code than I would recommend WTL of MFC but it would be much more faster (in terms of develeopment cost) to use C# + WinForms or WPF.

Note that WTL is not in any way dependent or related to MFC other than similar APIs. So if you pick WTL you have no dependencies above what you would have with C+Win32 API. -- You should still use a .NET UI framework :)
Skrymsli
+1  A: 

If you must use native code then I would strongly suggest RAD Studio from Codegear / Embarcadero, it's a studio product that ships with Delphi (the object oriented language that evolved from Turbo Pascal) and C++ Builder, if you are already familiar with C/C++ then it's going to be very simple for you to pick it up. The Visual Component Library that is shared by both languages is extendable, powerful and RAD.

If you are able to use Managed code, then C# with Winforms is easy to use, WPF may be a better UI choice long term, but it has a steeper learning curve.

Tim Jarvis
+2  A: 

If you're going the .NET route, you will have to use .NET 2.0 because .NET 3.0 and above is only supported for Windows XP and above (Vista, 7, 2003, 2008).

I personally wouldn't sweat the .NET framework requirement. It's a one time install on each machine, that can be streamlined through Windows updates if needed.

Ray
+3  A: 

I'm not familiar with Centura Builder, so I am not sure at what level of abstraction your prior Windows programming experience is. If you choose the native code route using C/C++ and Win32, be sure to buy a copy of Programming Windows by Charles Petzold. Reading the first few chapters of this book can help you decide if you want to go the native code route as well.

If you choose the .NET Framework and C#, and if you do not need the version 3.5-specific features (such as LINQ for database access), I recommend choosing version 3.0. It is a built-in component on Windows Vista, so you don't have to package the runtime with your program installer unless you have to support Windows XP (which you probably do, so never mind :). With version 3.0, you get Windows Presentation Foundation (to use instead of or along with Windows Forms), which gives you a lot of graphical capability without a lot of effort. I'm not knowledgeable about CAD, so I don't know if WPF would provide the drawing functions that you need, but it may provide a great platform upon which you can write your own drawing routines.

EDIT: I missed your Windows version requirements on first reading, particularly the Windows 2000 requirement. I guess you'd have to go with .NET Framework version 2.0 and Windows Forms. I have to ask, though: Wouldn't it be cost-effective to improve your engineers' productivity by upgrading their eight-year-old machines to something newer and faster and therefore get rid of your Windows 2000 support requirement?

Jay Michaud
If I understand the situation correctly, I could request XP to be the minimum supported version. Furthermore, it appears that .Net 3.0 is configurable for XP. Picked up a couple of Apres books on Windows Forms and WPF and digging into the examples.
CyberED
A: 

You can do everything with C or C++ / Win32 api
(Win32 samples for CAD-like drawing are in MSDN..)