INFO: Stopping MFC/MDI from Creating New MDI Child Window On Startup (141725)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft Visual C++, 32-bit Editions 4.0

This article was previously published under Q141725

SUMMARY

By design, an AppWizard-generated MDI application will display a new MDI child window on startup. To turn off this feature, an application needs to use CCommandLineInfo::FileNothing as the shell command when calling the ProcessShellCommand() function.

MORE INFORMATION

The enum value CCommandLineInfo::FileNothing is missing from the online documentation of CCommandLineInfo::m_nShellCommand. However, its definition can be found in the header file \Msdev\Mfc\Include\Afxwin.h.

The ProcessShellCommand() function is called by InitInstance() of any CWinApp-derived class, so you can use the following sample code to disable the creation of a new MDI child window at startup:

Sample Code

BOOL CMyWinApp::InitInstance()
    {
    ...

    // Parse command line for standard shell commands, DDE, file open
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    // Don't display a new MDI child window during startup
    if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
      cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;

    // Dispatch commands specified on the command line
    if (!ProcessShellCommand(cmdInfo))
        return FALSE;

    ...
    }
				

Modification Type:MajorLast Reviewed:10/24/2003
Keywords:kbcode kbDocView kbinfo kbMDI KbUIDesign KB141725