Relationships Among MFC Objects

HomeOverviewHow Do ISampleTutorial

To help put the document/view creation process in perspective, first consider a running program: a document, the frame window used to contain the view, and the view associated with the document.

These relationships are established during document/view creation. The table "Gaining Access to Other Objects in Your Application" below shows how objects in a running program can access other objects. Any object can obtain a pointer to the application object by calling the global function AfxGetApp.

Gaining Access to Other Objects in Your Application

From object How to access other objects
Document Use GetFirstViewPosition and GetNextView to access the document's view list.

Call GetDocTemplate to get the document template.

View Call GetDocument to get the document.

Call GetParentFrame to get the frame window.

Document frame window Call GetActiveView to get the current view.

Call GetActiveDocument to get the document attached to the current view.

MDI frame window Call MDIGetActive to get the currently active CMDIChildWnd.

Typically, a frame window has one view, but sometimes, as in splitter windows, the same frame window contains multiple views. The frame window keeps a pointer to the currently active view; the pointer is updated any time another view is activated.

Note   A pointer to the main frame window is stored in the m_pMainWnd member variable of the application object. A call to OnFileNew in your override of the InitInstance member function of CWinApp sets m_pMainWnd for you. If you don't call OnFileNew, you must set the variable's value in InitInstance yourself. (SDI COM component (server) applications may not set the variable if /Embedding is on the command line.) Note that m_pMainWnd is now a member of class CWinThread rather than CWinApp.

What do you want to know more about?