Microsoft KB Archive/139422

= FIX: Advanced Options for SDI Application in Appwizard =

Article ID: 139422

Article Last Modified on 11/21/2006

-

APPLIES TO

 Microsoft Foundation Class Library 4.2, when used with:  Microsoft Visual C++ 4.0 Standard Edition

 Microsoft Visual C++ 4.1 Subscription

 Microsoft Visual C++ 4.2 Enterprise Edition

 Microsoft Visual C++ 4.2 Professional Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q139422

<div class="symptoms_section">

SYMPTOMS
Some of the Advance Options in Step 4 of AppWizard have no effect on an AppWizard-generated SDI applications. The Maximized and Minimized options for the Main Frame Window in the Window Styles tab have no effect when selected for an SDI application.

The message generated in Visual C++ version 4.0, 4.1, or 4.2 that says these styles have no effect on Windows 95 is also wrong. The problem isn't specific to Windows 95.

<div class="cause_section">

CAUSE
The AppWizard-generated code does not have code to show the main window maximized or minimized. MFC code shows the main window with value passed into the program through the nCmdShow argument to WinMain. This value is normally SW_NORMAL and hence the window will not be maximized or minimized.

<div class="resolution_section">

RESOLUTION
MFC stores the value passed through the nCmdShow argument to WinMain in CWinApp::m_nCmdShow. This variable can be modified to get the behavior you want. To have an SDI application initially maximized or minimized, set this variable to the appropriate value. Set m_nCmdShow to SW_SHOWMAXIMIZED to maximize or SW_SHOWMINIMIZED to minimize the main frame window initially. This variable has to be modified in the InitInstance function of the CWinApp-derived class before the main window is made visible.

In the Visual C++ 4.0 or 4.1 AppWizard-generated application, set this variable before this line: if (!ProcessShellCommand(cmdInfo)) return FALSE; If the application was generated with an earlier version of Visual C++, set m_nCmdShow to the appropriate value before this line: OnFileNew; In the Visual C++ 4.2 AppWizard-generated application do the following: if (!ProcessShellCommand(cmdInfo)) return FALSE;

m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);

<div class="status_section">

STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. The problem was corrected in Visual C++ version 5.0.

<div class="moreinformation_section">

MORE INFORMATION
The following sample code shows the correct context in which m_nCmdShow has to be modified and demonstrates how to show an sdi application initially maximized.

Sample Code
// Visual C++ 4.0, 4.1, or 4.2 AppWizard-generated SDI application BOOL CMyApp::InitInstance {  ...      ParseCommandLine(cmdInfo);

// Add the following line to initially maximize the Application. m_nCmdShow = SW_SHOWMAXIMIZED;

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

return TRUE; }

// Visual C++ 2.0 AppWizard-generated SDI application. BOOL CMyApp::InitInstance {  ...      AddDocTemplate(pDocTemplate);

// Add the following line to initially maximize the Application. m_nCmdShow = SW_SHOWMAXIMIZED;

// Create a new (empty) document OnFileNew; ...  }

Additional query words: kbVC400bug

Keywords: kbbug kbfix kbnoupdate kbvc500fix kbwizard KB139422

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.