The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Native Code Windows Programming

I want to get into programming Windows in native code. What language would you recommend? Delphi? C++ w/ MFC?

Can anyone recommend any good books?
Rob Reagan Send private email
Friday, May 05, 2006
 
 
First of all, it sounds like you're talking about Win32 API programming.

And yes, MFC is the next level up from 'native' Windows programming.  I understand the ATL is superior, but I haven't used it yet.
AllanL5
Friday, May 05, 2006
 
 
Oh, and Visual Studio 6 C++ is the typical platform for doing that -- unless the 2005 version is better.

Stay away from Delphi, it's WAY too expensive now.
AllanL5
Friday, May 05, 2006
 
 
It depends on the type of application you are planning to write. For client/server type apps that include any kind of database-access I think Delphi amortizes itself quickly.
On the other hand, writing a game in Delphi would make no sense at all.

Just make sure you skip Delphi 8 and 2005.
Fritz Huber Send private email
Friday, May 05, 2006
 
 
Straight C with the Peltzoid book.
Grant
Friday, May 05, 2006
 
 
+1 to the Petzold book -- "Programming Windows"
AllanL5
Friday, May 05, 2006
 
 
Doing the Petzold book using the API directly from C / C++ code is the best way to really learn how it works.

If you must use a higher level wrapper, then I'd recommend WTL - MFC is pretty gross.
Michael G
Friday, May 05, 2006
 
 
>Straight C with the Peltzoid book.<

you will also need something like a punching bag to take out your frustration. not a dig against petzold, but programming directly with the windows api is about as much fun as a kick in the balls.
starving coder
Friday, May 05, 2006
 
 
Just curious if you want to do C++/C programming that's not tied to .NET in anyway which IDE/compilers do you use? Isn't even the C++ in the newer Visual Studios tied to .NET?
Justin Kolb Send private email
Friday, May 05, 2006
 
 
No, you can do native (what Microsoft calls "unmanaged") code in Visual Studio 2002, 2003, and 2055 without touching .NET at all. ATL in particular got some major improvements and bug fixes starting with ATL 7.

MFC hasn't really been updated much in the same timeframe, with the exception of decoupling some classes (like CString) so that you can use them without the rest of MFC.

Personal opinion, not talking for my employer (Microsoft) here: if you're doing unmanaged code, the 2005 compiler is the best of the bunch, but VS.NET 2003 is a much more stable IDE, and the compiler's no slouch either.
Chris Tavares Send private email
Friday, May 05, 2006
 
 
"Doing the Petzold book using the API directly from C / C++ code is the best way to really learn how it works.

If you must use a higher level wrapper, then I'd recommend WTL - MFC is pretty gross."

Or you can get an older Borland C++[Builder] and use their ObjectWindows Library (distributed with BCB Pro until version 4), or download OWLNext and use it with their free command-line tools.  Much better application framework that [IMO] MFC can ever hope to be.  Very nice ObjectOriented design and shouldn't be too hard to learn since you aren't an API junkie [yet].  MFC was designed to make migration easier for those were came from a predominantly Win16/32 API background.

If you're thinking abotu Delphi, you mind as well throw C++Builder into the mix.  Since it's a C++ compiler you will have full access to the API; and be able to use the documentation to its fullest (disregarding incompatibilities since MS designs their API around their compiler).  The IDE is "okay", it's a fast compiler, and the code isn't that bad [somewhat alot worse than VC++, though, YMMV].  Get an older version if you're still learning:  http://www.recycledsoftware.com ...

If you plan to use Delphi, I recommend the book "Tomes of Delphi - Win32 Core API Windows (2000 Edition)" and "Mastering Delphi <YourVersion>" by Marco Cantu.  He also has "Essential Pascal" and "Essential Delphi" for download on his website (the link escapes me but should come up first on a Google query).  "Delphi in a Nutshell" is also handy.

There are so many books on MFC and Visual C++, I can hardly narrow it down.  But I recommend starting with something generic.  Unlike Delphi, there are just way too many choices with C++; so you never know what you'll end up working with in the end :)

MS Press books seem to be rather good for Visual C++/MFC.  You can download the free express edition from Microsoft to get started (not sure if it comes with MFC or not, I have a better version).  If you need other versions and want a cheaper price:  http://www.recycledsoftware.com 4tw :)

Nate.
Nate Send private email
Friday, May 05, 2006
 
 
For a limited amount of time, you can get a free VS2005 Standard Not For Resale version, for watching 3 webcasts.

Here is the link:

 http://www.learn2asp.net/Campaign.aspx

Saturday, May 06, 2006
 
 
Thanks for the info everybody. I appreciate it.
Rob Reagan Send private email
Saturday, May 06, 2006
 
 
Yes, Borland's "OWL" was pretty good.  The only problem is it's obsolete.  Few employers will be impressed with Borland, where many want people who are knowledgable in Studio and Microsoft.
AllanL5
Saturday, May 06, 2006
 
 
"Few employers will be impressed with Borland, where many want people who are knowledgable in Studio and Microsoft."

Don't know many these days that would be impressed with high-level API coding (MFC).  A good grasp of Object-Oriented design is necessary, IMHO, though things may be different for certain jobs (of course).

I wouldn't exactly call MFC alive and kicking.

Nate.
Nate Send private email
Saturday, May 06, 2006
 
 
Let me give you the intent behind my original question. I have a software package that I sell over the web that offers a free trial download. I am currently having to distribute the entire .NET framework, which bloats my download.

Let me go ahead and say that my target market (poorly chosen as it was) are small companies without any IT guys. These folks are notoriously behind the technology curve. Having an installer that prompts to download the framework if not installed would blow their minds. I need to go super-lean.

I am wondering if I shouldn't jus sit tight. After all, presumably in a few years EVERYBODY will have the framework, right?

But hypothetically, if I were to do another project and wanted something with as small of a footprint as possible (read: not the .NET Framework), what would you recommend?

-Rob
Rob Reagan Send private email
Saturday, May 06, 2006
 
 
In addition to Petzold, I would recommend "Win32 Programming" by Brent Rector.  IMO it explains things well and covers some topics that Petzold doesn't.
Dave B. Send private email
Saturday, May 06, 2006
 
 
I have had to consider the same thing.  It really depends on the type of app you're writing, but it would be really tough to move from a high-level framework (.NET) to using the C/Win32.  It's a business decision so time to market, and cost of development are important factors.  The price for either Delphi or C++ Builder (Same thing now), is negligible compared to the time you would spend developing against the Win32 in C/C++.

I would seriously consider either Delphi or C++ Builder.  Download the trial version for 45 days and play with it.
cipher
Sunday, May 07, 2006
 
 
Just don't download any version of Delphi after 7.  It stinks on ice after 7.
Clay Dowling Send private email
Monday, May 08, 2006
 
 
> After all, presumably in a few years EVERYBODY
> will have the framework, right?

Umm... WHICH framework?  1.0? 1.1? 2.0? 2.1? 3.0?

.Net is for in house developed line-o-biz work, not for shrink wrapped products.

Your target market might be much happier with software developed in VB 6.0 instead.
Glen Hamer
Monday, May 08, 2006
 
 
" The price for either Delphi or C++ Builder (Same thing now), is negligible compared to the time you would spend developing against the Win32 in C/C++."

Which is just too bad, since it's one of the buggiest piece of software for developers in existence today.  BDS' bugs put even the lowest quality Open Source software to shame, indeed.

I hope you don't believe those words.  Then again, people probably will...  How's that saying go?

"Everything you read on the internet is true."

Nate.
Nate Send private email
Tuesday, May 09, 2006
 
 
Also, BDS lags in .NET capabilities, as well as code generation.

They use the same backend as their C/C++ compiler, which generates code that is shitty compared to Microsoft's compiler.  They cannot target 64-bit, and they are limited to .NET 1.1.

Such shame, I used to be a Borland zealot...

Nate.
Nate Send private email
Tuesday, May 09, 2006
 
 
Something that's really missing is a nice native C++ framework for Windows only.

Kinda like Qt's trolltech from an ease of use standpoint, but optimized for Windows.

It would be great if MS provided such an alternative and integrated it into VS.

Too bad they don't really seem interested in native anymore.
Fritz Huber Send private email
Tuesday, May 09, 2006
 
 
Clay,

You obviously haven't looked at Delphi 2006 (Delphi 10), or you wouldn't make such a ridiculous statement. :-)

Ken
Ken
Tuesday, May 09, 2006
 
 
Nate,

"Which is just too bad, since it's one of the buggiest piece of software for developers in existence today.  BDS' bugs put even the lowest quality Open Source software to shame, indeed."

What the h*ll are you talking about? BDS 2006 is the slickest IDE I've ever seen, and with Service Pack 2 it's also the least buggiest. The IDE beats VS2005 (at least Express, which is the only one I've worked with) hands-down.

Ken
Ken
Tuesday, May 09, 2006
 
 
I'm sorry, I know there are still alot of Delphi evangelists abound.  It's common to expect such replies from extreme supporters of niche products...

But BDS2006 has alot of problems with memory leaks, poor performance, etc.

http://sherwood.lh.umu.se/images/out2.jpg
when working with image lists someone posted complaining why they were out of system resources and the IDE crashed.

And if you plan on using anything to do with Together integration...
http://sherwood.lh.umu.se/images/out.jpg

Yes, the IDE crashed shortly after of course.  This person is complaining, as well as many others.  I haven't seen any other IDE go up to almost a gig of RAM used, not JBuilder, that's for sure.  And the minimum system requirements for JBuilder is what?  768MB RAM?

The help system also leaves MUCH to be desired...

This IDE is buggy, unless you, like many others; choose to disable a plethora of features in exchange for stability.  Unfortunately, some people cannot make that exchange; and in those situations it's about the buggiest PoS you can buy, especially given the price it's running for.

VS2005 has yet to crash on me, consume all my RAM/swap memory, or halt my system [yet]; so I find your statement of BDS being the most stable IDE (least buggiest) IDE out there quite fascinating.

Of course, I don't know what you do with it; but I have had much (^256) less fun f*ck*ng with their IDE than any other tool available.  I rather develop with Emacs and make.

Nate.
Nate Send private email
Wednesday, May 10, 2006
 
 
-"IDE" in that second-to-last paragraph.

Nate.
Nate Send private email
Wednesday, May 10, 2006
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz