Can someone clarify some Windows' terms for me
-
What is the difference between Win32, Windows API, MFC, ATL, and COM? Forgive my ignorance I am new to Windows programming.
SDK API = (Software development kit) Application programming interface (Analogous to CRT in DOS kinda). SDK includes the tools and docs required and API is the standard or the function interfaces. MFC = Microsoft foundation classes is a framework (Basically a bunch of classes which do what the win32 API does, but more OOP friendly) WTL/ATL=Windows/Active template library. Basically does what MFC does for windows API, but using template classes instead of C++ classes. COM/ActiveX = Was an idea M$ had which would allow for code to be modularized (if thats a word :)) basically kept in a binary form which any supported language could use (VB, C++, Delphi, etc). In C++ programmers have long since passed around code in source form as C++ classes, however programmers were still still free to mess up code, modify it, etc...not ideal for commercial code your trying to sell. COM objects were designed to fix this, by keeping everything binary...so programmers had to manipulate data members via accessor/mutators like any OO purist would tell you to do. Also you hide the implementation much better than a C++ class...because functions which are meant to be private are not visible to client programmers...only interface functions are(actually it's at programmers discretion). COM=Component object model...basically it's a standard binary communication mechanism required for code (written in delphi, c/c++, etc) to communicate with ActiveX/COM objects. This gets hard to explain briefly...i'd advise you to read an article or two on the idea/theory behind it...MSDN used to have lots...but i'm not sure if ActiveX/COM is as big of a buzz word as it was a few years ago, since the release of .NET...you'd have to ask someone more familiar with what .NET actually is and does :) This is as far as I understand it anyways :) I'm drinking triples, seeing double and acting single :cool:
-
What is the difference between Win32, Windows API, MFC, ATL, and COM? Forgive my ignorance I am new to Windows programming.
Windows API: The application programming interface (API) exposed by the windows operating system. In Unix terms this would be like the OS system call interface, excepting of course of the fact that the Windows API does everything, rather than having half a dozen different APIs you must code to, like Unix, X, Qt, etc. Win32: Coined to distinguish between the Windows API exposed by old 16 bit versions of Windows, i.e. Windows 1.0-3.11, and 32 bit versions, i.e. Windows 95-ME and Windows NT 3.1-Windows 2003 Server. Win32 is now a synonym for Windows API since the Win16 API is dead and forgotten. MFC: Microsoft Foundation Classes - the original application framework that Microsoft first shipped with their C 6.0 compiler. It is old and crufty and designed for C++ without templates or other modern features. It tries hard to force everything into the Model-View-Controller design pattern. ATL: Active Template Library - named in an era when Microsoft was sticking Active on the front of everything, like ActiveX, ActiveServer, ActiveMovie, ActiveBob. This is a newer library, designed primarily to support writing COM components in C++. It uses the language in a much more modern way than MFC, but doesn't cover nearly the same breadth of functionality. You can bold ATL and MFC together in the same application but it isn't really a great match. WTL: You missed this one, but it is important. This is a library build on top of ATL that broadens it's scope to make it closer to an application framework. It is much lighter and faster than MFC. It has an amusing history of being supported and then unsupported and then supported by Microsoft. COM: Component Object Model - This was born as OLE2, but left it's parent in the dust and is the standard binary component specification that virtually all Windows software was based around until .NET arrived on the scene. COM is dead, long live COM. -Blake
-
SDK API = (Software development kit) Application programming interface (Analogous to CRT in DOS kinda). SDK includes the tools and docs required and API is the standard or the function interfaces. MFC = Microsoft foundation classes is a framework (Basically a bunch of classes which do what the win32 API does, but more OOP friendly) WTL/ATL=Windows/Active template library. Basically does what MFC does for windows API, but using template classes instead of C++ classes. COM/ActiveX = Was an idea M$ had which would allow for code to be modularized (if thats a word :)) basically kept in a binary form which any supported language could use (VB, C++, Delphi, etc). In C++ programmers have long since passed around code in source form as C++ classes, however programmers were still still free to mess up code, modify it, etc...not ideal for commercial code your trying to sell. COM objects were designed to fix this, by keeping everything binary...so programmers had to manipulate data members via accessor/mutators like any OO purist would tell you to do. Also you hide the implementation much better than a C++ class...because functions which are meant to be private are not visible to client programmers...only interface functions are(actually it's at programmers discretion). COM=Component object model...basically it's a standard binary communication mechanism required for code (written in delphi, c/c++, etc) to communicate with ActiveX/COM objects. This gets hard to explain briefly...i'd advise you to read an article or two on the idea/theory behind it...MSDN used to have lots...but i'm not sure if ActiveX/COM is as big of a buzz word as it was a few years ago, since the release of .NET...you'd have to ask someone more familiar with what .NET actually is and does :) This is as far as I understand it anyways :) I'm drinking triples, seeing double and acting single :cool:
Mine was funnier, even if later. :P -Blake
-
What is the difference between Win32, Windows API, MFC, ATL, and COM? Forgive my ignorance I am new to Windows programming.