Windows programming environments
1 / 4

Windows Programming Environments - PowerPoint PPT Presentation

  • Uploaded on

Windows Programming Environments. Jim Fawcett CSE775 – Distributed Objects Spring 2007. Windows Programming Environments. Win32 API:

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Windows Programming Environments' - dusty

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Windows programming environments

Windows Programming Environments

Jim Fawcett

CSE775 – Distributed Objects

Spring 2007

Windows programming environments1
Windows Programming Environments

  • Win32 API:

    • virtually all of the programming functionality directly or indirectly used in any Windows program, e.g., I/O, windows, controls, threads, sockets and other IPC, memory management, device management

  • C++ Std Libraries:

    • Console I/O, file abstraction, math, STL containers …, memory allocation, …

  • Visual Studio Libraries and Facilities:

    • Dialog designers, thread abstraction, COM related wrappers – smartpointers, BSTRs, …

  • COM Libraries and Run-Time:

    • Support for component models, e.g., definition of interfaces, management of lifetime, image packaging in DLLS and EXEs, persistence, structured storage, RPC …

  • ATL Libs:

    • Wrappers around COM that simplify its programming model, wrappers for COM types and smart pointers

  • WTL:

    • Wrappers around Win32 windows and controls that provide a light-weight GUI framework

  • MFC:

    • Classes, macros, and data structures that support the development of GUI applications in a heavy weight framework

  • .Net Managed Environment:

    • New execution model, wrapping of most of the Win32 API, library facilities that cover most of the C/C++ library functionality in a manner consistent with its managed environment, WinForms - a medium weight GUI framework

Strengths of each environment
Strengths of Each Environment

  • Win32

    • Natively provides windows, controls, memory management, process management, threads, directory and file management, access to Registry.

  • C++

    • Widely supported and powerful object model, very well designed abstractions for console I/O, file management, containers, math.

  • Visual Studio Libraries

    • Smoothly integrates into all the Windows programming environments. Supports a COM-based programming model.

  • COM

    • Early and effective support for Component Engineering, allowing modifications to parts of large complex systems without rebuilding the entire system.

  • ATL

    • Efficiently and effectively hides a lot of COM’s complexity and weak encapsulation.

  • WTL

    • Very light weight and flexible wrapping of Windows many GUI facilities. Integrates well with ATL programming model.

  • MFC

    • Rapid development of complex user interfaces, provided that you want to use its models.

  • .Net Managed Environment

    • Elegant and well encapsulated wrapping of most of the Win32 API. Provides a very easy to use GUI framework, supports managed code.

What environments lack
What Environments Lack

  • Win32

    • No objects directly usable by applications

    • Byte and address oriented, no high-level types

  • C++

    • No threads, sockets, directory management, windows

  • Visual Studio Libraries

    • Just support for other programming environments

  • COM

    • Weak object model - no inheritance of implementation, very limited types, weak encapsulation

    • Weak networking, no windows

  • ATL

    • Weak windowing, no networking other than COM’s limited facilities.

  • WTL

    • Focuses exclusively on providing support for GUIs, not supported by Microsoft

  • MFC

    • Focuses mostly on providing support for GUIs with a ridgid architectural model

  • .Net Managed Environment

    • Requires run-time and libraries not found by default on Windows systems (that will change with Vista), uses a shallow reference object model, not ideal for some applications, e.g., scientific programming and memory intensive applications like medical imaging.