The chief structural differences between MDI and SDI applications built with MFC are as follows:
- MDI applications derive their top-level frame window classes from CMDI-FrameWnd rather than CFrameWnd.
- MDI applications use classes based on CMDIChildWnd to represent the child frame windows that frame views of their documents.
- MDI applications use CMultiDocTemplate rather than CSingleDocTemplate to create document templates. The frame window class referenced in CMultiDocTemplate's constructor is the child frame window class rather than the top-level frame window class.
- MDI applications have at least two menu resources, as opposed to SDI's one. One is displayed when no documents are open; the other is displayed when at least one document is open.