What to learn?

A

aaronfude

Hi,

I'm an experienced C++ programmer (mostly in unix and other abstract
environments such as mex). I'm now getting into Windows programming and
finding out that there are many acronyms and technologies. So I'm
trying to figure out what to start learning.

It seems that .Net will replace MFC so might as well not invest time in
MFC.

But would it still be worth my while to learn fundamentals like COM,
etc. For example, I want to write shell extensions.

If so, what is a good source for learning the windows programming
*fundamentals* which are here to stay. (For instance, even dll's
confuse me, b/c in unix a library is simply a collection of compiled
object file, but in windows there are regular dlls, extension dlls,
etc.)

Many thanks in advance,

Aaron Fude
 
J

John

Hi,

I'm an experienced C++ programmer (mostly in unix and other abstract
environments such as mex). I'm now getting into Windows programming and
finding out that there are many acronyms and technologies. So I'm
trying to figure out what to start learning.

It seems that .Net will replace MFC so might as well not invest time in
MFC.

But would it still be worth my while to learn fundamentals like COM,
etc. For example, I want to write shell extensions.

If so, what is a good source for learning the windows programming
*fundamentals* which are here to stay. (For instance, even dll's
confuse me, b/c in unix a library is simply a collection of compiled
object file, but in windows there are regular dlls, extension dlls,
etc.)


I don't know the official status of MFC, but I wouldn't be suprised if it's
no longer supported. MFC mostly seemed to me to be a good library for
building GUI's and some COM stuff. But in reality, VB was most popular for
Windows GUI's, and ATL was better for COM than MFC.

If you want to stick with C++, you can learn Win32 API
http://msdn.microsoft.com/library/d...us/winprog/winprog/windows_api_start_page.asp

I don't know if ATL is still supported, but you may want to look into ATL or
what ever it has evolved into.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/atl.asp

A big problem with Windows programming is that the components are constantly
breaking with new versions and library incompatabilities (DLL hell). But I
was once told that if you wrote any program directly to the Windows API in
Win95, it would still work today. This is because everything is based on
those API's, so it is always compatable. We will see if .NET will change
this, but .NET is probably built on Win32 API also.

So if you are planning to do any serious work in Windows you may want to
stick with C++ & go directly to the Windows API.

If you are not planning to write device drivers, networking software,
antivirus apps, etc ... you may want to go with .NET. .NET is a fantastic
improvement over any Windows development that I have done in the past 10
years. And it's where MS is focusing it's development efforts ... so that's
where you want to be.

Hope this helps.

Good luck,
John
 
A

aaronfude

Thanks!

And how does COM fit in to the framework? Is it something independent
of .NET?

Also, I think that my frame of mind is similar to yours. Can you
recommend a book on the Windows API. Is "Programming Windows" still
relevant? And does it talk about COM?

Thanks again,

Aaron Fude
 
J

John

Thanks!

And how does COM fit in to the framework? Is it something independent
of .NET?

Also, I think that my frame of mind is similar to yours. Can you
recommend a book on the Windows API. Is "Programming Windows" still
relevant? And does it talk about COM?

Since 2001, my desktop apps have been largely VB, and for the past 2-3
years, I've been concentrating mostly on web-apps. So any C++ / Windows API
book I recommend would be outdated. Check Amazon.

COM is part of MS's component based technologies. The evolution went
something like this :
OLE to OLE2 to ActiveX to COM to COM+

..NET is something completely different. It's very similar to Java (from my
understanding of Java). It's a brand new technology. You can still access
..NET via COM, and I believe you can access non-.NET COM objects via .NET.

If you do decide to go the C++/Win32 route, you may want to learn how to
write Win32 Windows apps from scratch, just so you understand what is going
on under the surface.

BTW-I'm not "recommending" or "not recommending" you go the C++/Win32 route.
I'm just trying to answer your questions directly as you asked them.
Personally, as I stated before, unless the app is tightly bound to the OS or
needs to be super fast, I prefer .NET.

Again I hope this helps.

Regards,
John
 
F

Fabien Bezagu

Aaron,

Firstly, welcome in the Windows programming world :) I'll try to advice
you, as far as I can.

..Net is the new (since 2002) microsoft framework. It has been developed to
replace the old VB/C++/Win32 architecture. COM, MFC, ActiveX, native DLL ...
will certainly disapear in the few next years. I won't recommend you to
spend a lot of time learning these old technologies. Developers who need to
interoperate with them can with .Net but the idea, if you want to start on
good basis, is to use managed mode.

To learn fundamentals, I advice you to buy some books. The Petzold
(Programming Windows with C#) is always a reference but needs however to be
completed by some book on the framework if you want to understand very well
the main concepts.

You should not need to learn the windows API in a first step. It'll comes
later, when you'll want to break the limits of the Framework Class Library
(which are high).

Finally, you shouldn't hesitate to learn C#. Its syntax won't frighten you
if you're strong with C++ and its a very good OO language.

Good luck

Fabien
 
A

aaronfude

Hi Fabien,

Thank you for such a thoughtful response. It's kind of what I wanted to
hear.

One problem is that one of my immediate needs is to write a shell
extension. Is that possible with .Net yet?

Thanks again,

Aaron Fude
 
A

aaronfude

Hi Fabien,

Thank you for such a thoughtful response. It's kind of what I wanted to
hear.

One problem is that one of my immediate needs is to write a shell
extension. Is that possible with .Net yet?

Thanks again,

Aaron Fude
 
F

Fabien Bezagu

Can you be a bit more explicit on what you need ? I don't honestly see what
you mean with "shell extension"....
 
A

aaronfude

I want the user to right-click on an image in explorer, choose a custom
item from the menu that would bring up a gui that will allow the user
to select some options and then operate on that image.
 
F

Fabien Bezagu

I don't think it's a problem with any framework capable of writing to the
registry. Of course, .Net is so you can go with managed code with any
language of your choice.

Fabien
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top