CWinApp follows similar design like a singleton class. A singleton class uses a static member to hold its own instance. Constructor is made private and thus objects cannot be created with new operator or in local space. singleton class saves its own object in that static member and it never creates more than one object. It creates first instance and returns the same object for the subsequent creations. Thus it represents only a single instance and shares the same instance to all the context of an application.

CWinApp also holds static private members to hold many application resources. It provides many global API calls like AfxGetApp, AfxGetInstanceHandle,AfxGetResourceHandle,AfxGetAppName etc to access singleton resources of an application. Any MFC apllication deals with only one application instance. However the design of CWinApp is not a pure singleton class. Constructor of CWinApp is not private and thus from development point of view there is no restriction to create multiple objects. In case of multiple application object declared in development , it takes the latest object pointer and it works with no problen. However it is recomended to create only one instance as the remaining objects will be unused. MFC has a sanity check and gives an assertion during runtime if we are running debug build.

About our authors: Team EQA

Further readings

Where is WinMain() function in MFC application ?


What is the utility of CWinApp class?


Basic steps in Win32 GUI Application with source code.


What is a Window CallBack procedure and what is its utility?


What are LPARAM and WPARAM in window proc function?


What are the basic steps of a typical MFC based application?
