Converting a Win32 Application to ATL | CodeGuru

Converting a Win32 Application to ATL

In the midst of all this publicity writing ATL-based applications, you will find little in the way of documentation on porting your legacy Win32 applications to ATL. Hopefully, these steps will ease that migration path. Migration Steps Include AtlBase.h file in StdAfx.h after AfxWin.h. This is to take advantage to declare a variable for CComModule. […]

Written By
CodeGuru Staff
CodeGuru Staff
May 9, 2000
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

In the midst of all this publicity writing ATL-based applications, you will
find little in the way of documentation on porting your legacy Win32 applications to
ATL. Hopefully, these steps will ease that migration path.

Migration Steps

  1. Include AtlBase.h file in StdAfx.h after AfxWin.h. This is to take advantage to
    declare a variable for CComModule. Because AtlWin.h file needs, _Module as variable
    of CComModule.
    #include <atlbase.h>
    #include <objbase.h>
    

    We have to keep extern because we are originally declaring variable in
    Application main file.

    extern CComModule _Module;
    

    Then include the remaining files which helps for an ATL Application. In the insert Object of ATL uses ATLHost.h which needs to compile atlcom.h as before.

    #include <atlwin.h>
    #include <atlcom.h>
    
  2. In the StdAfx.cpp, Include AtlImpl.cpp file.
  3. In the main Application file, add the following
    //originally declaring the CComModule variable
    CComModule _Module;
    

    Then, Add the following two lines, which are required to activate ATL
    Object Wizard, when you choose Insert ATLObject from Insert Menu.

    BEGIN_OBJECT_MAP(ObjectMap)
    END_OBJECT_MAP()
    
  4. Initialize the CComModule variable with ObjectMap and with the current
    instance in the WinMain function
    _Module.Init(ObjectMap, hInstance);
    
  5. Add the <ProjectName>.idl file into the project and add the library related code:
    library TestLIB
    {
    }
    
  6. If you want to insert a dialog and want to show. Follow the above steps and
    declare the variable of ur dialog class and call DoModal with that variable
    (don’t forget to include dlg header file).

Additional Notes

This code has been tested with and works fine with the Windows CE environment.

References and Acknowledgments

  • ATL Internals – Rector, Sells (My thanks to the Authors!)
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.