Back to the basics: win32 programming
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
Despite what some Microsofties might say, I still think Win32 programming has its place in the world. But, that's mainly for lower level things or if you're just curious. As far as your average business, data driven development goes .NET is where it's at. But, knowing Win32 has its advantages - it's faster. And, it'll also help even further your understanding of the way Windows works and complement a .NET education. So, I'd say learn both if you're looking for a solid education. Also, I'd personally recommend the book "Win32 Programming" because I've read it and it's packed with a lot of good info. However, I heard the Charles Pretzold book was good as well, but since I've never read that one I can't say much about it. Jeremy Falcon
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
Learn both. Knowledge yields power. :) -- Weiter, weiter, ins verderben. Wir müssen leben bis wir sterben. Are you bright too?[^]
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
Some people mentioned that you can learn both Win32 and C#. I agree, but I suggest that you focus on C# more because it is the way things are heading. C# does have a lot of benefits... - faster developement (by far faster) --> saves money - managed code (obviously don't have to worry as much about mem) - a lot cleaner (compared to all those macros in c++) - easier to learn - widespread and supported this is just the begining im sure people can list a ton more.
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
I think a lot of it depends on who your target audience is. For "in-house" development, .NET would probably be the way to go, but without an understanding of the fundamentals of Windows programming using "classic" Win32, I think you will struggle. If you are developing commercial software for sale, it has to be Win32 all the way. While I'm sure there is some, I have yet to come across any mass-market, shrink-wrap software that uses .NET.
-
I think a lot of it depends on who your target audience is. For "in-house" development, .NET would probably be the way to go, but without an understanding of the fundamentals of Windows programming using "classic" Win32, I think you will struggle. If you are developing commercial software for sale, it has to be Win32 all the way. While I'm sure there is some, I have yet to come across any mass-market, shrink-wrap software that uses .NET.
That's only because of how long it takes to develop. Christian I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
Personally, I'd advocate Win32 only for personal interest unless you have work in that area. I would be stunned if any new projects are Win32, as opposed to MFC. Learn C#, no matter what. The more you learn, the better off you are, and there's lots of work in this area, as you'd expect. Christian I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
To me this is not really an either/or decision. Even though none of the Microsoft diagrams of .Net show it this way, the fact is that .Net, MFC, ATL, and every other framework is based on the Win32 API. So learning Win32 - as well as .Net - will help you in the long run. Don't forget that even in .Net, you can still call Win32 APIs directly.
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
Well you didn't say if it was a hobby or not, if it's a hobby do what you please, if you plan to feed a family for the forseable future, go directly to .net. Much of Win32 is UI related for obvious reasons and Microsoft seems lately to be hell bent on making that UI code obsolete. If this was 1988 I would recommend Win32, but I couldn't in any honesty give you one good reason to learn it now, it's starting to get pretty stale. If you want a career maintaining someone else's code that was written circa 1990 to 2002 for the rest of your life by all means learn win32, no responsible company is going to use it to write anything beyond drivers in short order. In fact even ATI now requires .net to install their latest video drivers (for the utility programs). Your not going to get and easy answer to this question here, there is a huge bias for win32 and a huge bias against .net (or at least there has been up to a few months ago) so don't expect a truly "agnostic" answer. You will likely also get a lot of people who will advocate that you should learn win32 because it's "Important" to know that kind of thing even if you are programming in a higher level language. That argument has always been utter hogwash, if you have the time and are curious fine, if you want to make a living stick to knowing what you need to know first, a professional programmer can make an excellent living (and write professional grade code) knowing absolutely nothing about win32 internals. If it's for work then you might want to take a look at the jobs being offered that you might be going after some day and see what they require. In all honesty, the last time I looked I think there were far more Java jobs than anything else on offer for corporate work, but that might have changed lately.
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
I have found it worthwhile to know the Windows API and to be able to write small windows apps "from scratch" in my work. In addition to working on larger sofftware applications, I've done lots of contract work, where I developed many utility programs that do process-orientied things, or tweaks of Windows (like moving the icons on the desktop, for example). When writing a little utility that runs in the background, it is particularly nice to write it in C++, without MFC (which I've never liked -- Borland C++ Builder is far better for visual apps, bare bones API is better for console, or "demon" apps) and be able to tune it to use 0% CPU and just a modicum of memory. Although, I imagine I would find it much harder to learn the bare bones API if I were starting out these days, when there are such temptations as C# around. When the API was the only game in town, it was painful, but necessary to learn it, today, it will require a sustained and adamant force of will on your part. Good luck! Matt Gerrans
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
If it's for desktop applications, there's one point speaking for Win32 API: WinForms doesn't seem to be made to stay, and the last information I remember is that Avalon will be WinXP and above only. Only time will tell which gets the bigger bite. [edit]On general, I agree with others, if you have the power, learn both
we are here to help each other get through this thing, whatever it is Vonnegut jr.
boost your code || Fold With Us! || sighist | doxygen -
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
Even though .net will/has superceeded MFC, it's the underlying workings you need to know -COM/Win32/Win64. It would be a benefit to learn at least some of the Platform SDK sections e.g. I/O, Windows etc. Also learning some basic COM principles these will help when intergrating with COM objects outside of .net (regardless of what people - COM is not dead).
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
If you know MFC and have been working in it for "Some time" (assuming that is not just the weekend), then WIN32 should be no biggy. That said, it probably still is not worth the time to bother unless required. Spend the time either writing code that will remain worth while or go out and enjoy some time away from the computer. You can always learn WIN32 if you should need to, but you probably will not find the need. The .NET frameworks has already taken over and will continue to do so. Everything else is fast becoming legacy and there is more value in staying current than learning legacy stuff. One thing to note, is .NET is not a language, it is a framework or more or less a platform. You can still make Win32 calls if you ever feel in the mood and you can still work in C++ if you find you need to waste all that time typing and debugging code. It is not out to replace C++, it is just that many of us old time C++ people found that we can bend a little and reap huge levels of productivity, which is much more valuable to us than tracking down a null pointer or a mismatched DLL signature ;) Rocky <>< www.HintsAndTips.com - Now with "Recommendation" postings www.JokesTricksAndStuff.com www.MyQuickPoll.com - Now with Recent Poll List www.GotTheAnswerToSpam.com - Again :)
-
I think a lot of it depends on who your target audience is. For "in-house" development, .NET would probably be the way to go, but without an understanding of the fundamentals of Windows programming using "classic" Win32, I think you will struggle. If you are developing commercial software for sale, it has to be Win32 all the way. While I'm sure there is some, I have yet to come across any mass-market, shrink-wrap software that uses .NET.
The first commercially available thing I've seen written in .NET is an optional part of ATI's driver package. Other than that, I don't know of anything. Someone said earlier that you want to use Win32/C++ when speed (of execution) is an issue. I've always thought speed was an issue - when did it become less important than anything else? ------- sig starts "I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
-
Well you didn't say if it was a hobby or not, if it's a hobby do what you please, if you plan to feed a family for the forseable future, go directly to .net. Much of Win32 is UI related for obvious reasons and Microsoft seems lately to be hell bent on making that UI code obsolete. If this was 1988 I would recommend Win32, but I couldn't in any honesty give you one good reason to learn it now, it's starting to get pretty stale. If you want a career maintaining someone else's code that was written circa 1990 to 2002 for the rest of your life by all means learn win32, no responsible company is going to use it to write anything beyond drivers in short order. In fact even ATI now requires .net to install their latest video drivers (for the utility programs). Your not going to get and easy answer to this question here, there is a huge bias for win32 and a huge bias against .net (or at least there has been up to a few months ago) so don't expect a truly "agnostic" answer. You will likely also get a lot of people who will advocate that you should learn win32 because it's "Important" to know that kind of thing even if you are programming in a higher level language. That argument has always been utter hogwash, if you have the time and are curious fine, if you want to make a living stick to knowing what you need to know first, a professional programmer can make an excellent living (and write professional grade code) knowing absolutely nothing about win32 internals. If it's for work then you might want to take a look at the jobs being offered that you might be going after some day and see what they require. In all honesty, the last time I looked I think there were far more Java jobs than anything else on offer for corporate work, but that might have changed lately.
In San Antonio, there were VERY FEW jobs available for anything other than DBAs. Of the jobs that weren't DBA, most were for C++ with a smattering of Java, and nothing for .NET. That was in May/June of 2004. My current job requires C++ with heavy MFC knowledge. They're still debating whether or not they'll even move to VC7, and there has been absolutely no discussion of going to managed code, C#, or .NET. ------- sig starts "I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
First and foremost: what does you boss want? When the boss (which might mean chief engineer) says you are using something, then the first priority is learning that. If the boss says .net (and many do for good reason when win32/mfc is the alternative) then you do .net. If the boss says win32/mfc, and then you do that. If you are looking for a job, well .net is where all new development for MS windows is going. However it will take years to get there, if it ever does. I know people who have made carrers out of learning last years technology and supporting all those old systems after everyone else moved to the latest fad. Make a choice, based on what you want to do. More knowledge is never bad. Okay, now that professional considerations are out of the way, it is time to consider fun. Learn qt. Even though it does some really strange things to C++, I still like qt, it is well designed, and easy to use. Development is fun and (fairly) quick with qt. And if you do it right your programs are easially portable to Unix and Macs. There is also wxWidgets, TK, and GTK. Not to mention hundreds of lesser known toolkits. It is a personal choice, so I won't fault you for liking any of them. Remember, these are all just APIs. Once you know how to program you can pick up any as you need it. I may take years to know off the top of your head which option does some strange feature, but a good programer can quickly understand the basics enough to be productive.
-
Personally, I'd advocate Win32 only for personal interest unless you have work in that area. I would be stunned if any new projects are Win32, as opposed to MFC. Learn C#, no matter what. The more you learn, the better off you are, and there's lots of work in this area, as you'd expect. Christian I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
Just wrote a small service to monitor a serial port, analyze the results, and send status out via UDP using Win32. I selected Win32 for its advantages in size and speed.
-
If you know MFC and have been working in it for "Some time" (assuming that is not just the weekend), then WIN32 should be no biggy. That said, it probably still is not worth the time to bother unless required. Spend the time either writing code that will remain worth while or go out and enjoy some time away from the computer. You can always learn WIN32 if you should need to, but you probably will not find the need. The .NET frameworks has already taken over and will continue to do so. Everything else is fast becoming legacy and there is more value in staying current than learning legacy stuff. One thing to note, is .NET is not a language, it is a framework or more or less a platform. You can still make Win32 calls if you ever feel in the mood and you can still work in C++ if you find you need to waste all that time typing and debugging code. It is not out to replace C++, it is just that many of us old time C++ people found that we can bend a little and reap huge levels of productivity, which is much more valuable to us than tracking down a null pointer or a mismatched DLL signature ;) Rocky <>< www.HintsAndTips.com - Now with "Recommendation" postings www.JokesTricksAndStuff.com www.MyQuickPoll.com - Now with Recent Poll List www.GotTheAnswerToSpam.com - Again :)
It is not out to replace C++, it is just that many of us old time C++ people found that we can bend a little and reap huge levels of productivity Interesting, VB programmers have been saying that for over a decade. But, C++ programmers still insulted them regardless. But, now it's ok because C# has the letter "C" in it right? Jeremy Falcon
-
Greetings cpians! I'm currently facing the following dilemma: should I learn the Win32 API in depth, or is it not worth it anymore with .NET having arrived? I've programmed with MFC for some time, but because I started programming MFC without building anything even remotely complex with only the win32 api I never really learned how things worked on the API level. I'm thinking about getting either Win32 Programming (Joseph M. Newcomer, Brent E. Rector)[^] or Programming Windows 5th (Petzold)[^].Which book should I get? Alternatively, I could focus my effords on C# and the .NET framework as a whole. Although I think that .NET is neat, I don't think it's likely .NET languages will replace c++ altogether, therefore knowing win32 is probably useful in the long term as well. So, what to do? Cordially, Diederik P.s: For those who do consider this a programming question (even though it ain't) I'll save you the bother of looking up the link. It's here[^].
I would learn enough of Win32 to understand how Windows creates and destroys things, and how messages are passed around the system. If you understand than then understanding everything else built on top of it becomes much easier.
-
I think a lot of it depends on who your target audience is. For "in-house" development, .NET would probably be the way to go, but without an understanding of the fundamentals of Windows programming using "classic" Win32, I think you will struggle. If you are developing commercial software for sale, it has to be Win32 all the way. While I'm sure there is some, I have yet to come across any mass-market, shrink-wrap software that uses .NET.
PrintShop 20 Deluxe PringShop 20 Professional Publisher Windows Media Center Edition Logitec Digital Pen Some Quicken distros SourceGear Vault Matrox PowerDesk Symantec DriveImage 7.0 Symantec V2i Protector Autocad 2005 (although I haven't confirmed this one) GoalCentrix LlamaGraphics Just to name a few. I also heard that ATI used .NET in part of their driver package, but I haven't confirmed that.
Any remotely useful information on my blog will be removed immediately. Judah Himango
-
In San Antonio, there were VERY FEW jobs available for anything other than DBAs. Of the jobs that weren't DBA, most were for C++ with a smattering of Java, and nothing for .NET. That was in May/June of 2004. My current job requires C++ with heavy MFC knowledge. They're still debating whether or not they'll even move to VC7, and there has been absolutely no discussion of going to managed code, C#, or .NET. ------- sig starts "I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
I just got a .Net job in Austin and when I was looking it was about an even mix between C++/MFC, C#, and Java. But the corporate stuff was almost all either .Net or Java.
I can imagine the sinking feeling one would have after ordering my book, only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon