Brief Full Advanced Search Search Tips
|  |  | To access the contents, click the chapter and section titles. Fast Track Visual C++ 6.0 Programming (Publisher: John Wiley & Sons, Inc.) Author(s): Steve Holzner ISBN: 0471312908 Publication Date: 09/01/98 Search this book:
Previous | Table of Contents | Next
### The Application Object The application object’s job is to start and initialize the program and then show the main window. This object’s class is CKeysSDIAapp, and in that class’s InitInstance() function, we see how the program connects the other three classes—the document, main frame window, and view classes—to the program using a document template (we’ll make use of document templates throughout the book).
    BOOL CKeysSDIApp::InitInstance()
    {
        .
        .
        .
        CSingleDocTemplate* pDocTemplate;
        pDocTemplate = new CSingleDocTemplate(
         IDR_MAINFRAME,
            RUNTIME_CLASS(CKeysSDIDoc),                                 ⇐
            RUNTIME_CLASS(CMainFrame),       // main SDI frame window   ⇐
            RUNTIME_CLASS(CKeysSDIView));                               ⇐
        AddDocTemplate(pDocTemplate);
        .
        .
        .
Now that the other classes are set up, the program shows the main window this way in InitInstance():
    BOOL CKeysSDIApp::InitInstance()
    {
        .
        .
        .
        CSingleDocTemplate* pDocTemplate;
        pDocTemplate = new CSingleDocTemplate(
         IDR_MAINFRAME,
         RUNTIME_CLASS(CKeysSDIDoc),
         RUNTIME_CLASS(CMainFrame),       // main SDI frame window
         RUNTIME_CLASS(CKeysSDIView));
        AddDocTemplate(pDocTemplate);
        .
        .
        .
        // The one and only window has been initialized, so show and update it.
        m_pMainWnd->ShowWindow(SW_SHOW);                  ⇐
        m_pMainWnd->UpdateWindow();
                                                                        ⇐

        return TRUE;
    }
The program has been set up and the main frame window displayed. We’ll take a look at the main frame window class next. The code for KeysSDI.h and KeysSDI.cpp appears in Listing 1.2. Listing 1.2 KeysSDI.h and KeysSDI.cpp
    // KeysSDI.h : main header file for the KEYSSDI application
    //

    #if
    !defined(AFX_KEYSSDI_H__701B1AD5_9BB7_11D1_887F_D42B07C10710__INCLUDED_)
    #define AFX_KEYSSDI_H__701B1AD5_9BB7_11D1_887F_D42B07C10710__INCLUDED_

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000

    #ifndef __AFXWIN_H__
        #error include ‘stdafx.h’ before including this file for PCH
    #endif

    #include “resource.h”       // main symbols
    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIApp:
    // See KeysSDI.cpp for the implementation of this class
    //

    class CKeysSDIApp : public CWinApp
    {
    public:
        CKeysSDIApp();

    // Overrides
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CKeysSDIApp)
        public:
        virtual BOOL InitInstance();
        //}}AFX_VIRTUAL

    // Implementation

        //{{AFX_MSG(CKeysSDIApp)
        afx_msg void OnAppAbout();
         // NOTE - the ClassWizard will add and remove member functions here.
         //    DO NOT EDIT what you see in these blocks of generated code !
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
    };

    /////////////////////////////////////////////////////////////////////////////

    //{{AFX_INSERT_LOCATION}}

    // Microsoft Visual C++ will insert additional declarations immediately
    before the previous line.

    #endif //
    !defined(AFX_KEYSSDI_H__701B1AD5_9BB7_11D1_887F_D42B07C10710__INCLUDED_)

    // KeysSDI.cpp : Defines the class behaviors for the application.
    //

    #include “stdafx.h”
    #include “KeysSDI.h”

    #include “MainFrm.h”
    #include “KeysSDIDoc.h”
    #include “KeysSDIView.h”

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIApp

    BEGIN_MESSAGE_MAP(CKeysSDIApp, CWinApp)
        //{{AFX_MSG_MAP(CKeysSDIApp)
        ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
         // NOTE - the ClassWizard will add and remove mapping macros here.
         //    DO NOT EDIT what you see in these blocks of generated code!
        //}}AFX_MSG_MAP
        // Standard file based document commands
        ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
        ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
        // Standard print setup command
        ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIApp construction

    CKeysSDIApp::CKeysSDIApp()
    {
        // TODO: add construction code here,
        // Place all significant initialization in InitInstance
    }

    /////////////////////////////////////////////////////////////////////////////
    // The one and only CKeysSDIApp object

    CKeysSDIApp theApp;

    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIApp initialization

    BOOL CKeysSDIApp::InitInstance()
    {
        AfxEnableControlContainer();
        // Standard initialization
        // If you are not using these features and wish to reduce the size
        //  of your final executable, you should remove from the following
        //  the specific initialization routines you do not need.

    #ifdef _AFXDLL
        Enable3dControls();            // Call this when using MFC in a shared DLL
    #else
        Enable3dControlsStatic();    // Call this when linking to MFC statically
    #endif

        // Change the registry key under which our settings are stored.
        // You should modify this string to be something appropriate
        // such as the name of your company or organization.
        SetRegistryKey(_T(“Local AppWizard-Generated Applications”));

        LoadStdProfileSettings();  // Load standard INI file options (including
    MRU)

        // Register the application’s document templates.  Document templates
        //  serve as the connection between documents, frame windows and views.

        CSingleDocTemplate* pDocTemplate;
        pDocTemplate = new CSingleDocTemplate(
         IDR_MAINFRAME,
         RUNTIME_CLASS(CKeysSDIDoc),
         RUNTIME_CLASS(CMainFrame),       // main SDI frame window
         RUNTIME_CLASS(CKeysSDIView));
        AddDocTemplate(pDocTemplate);

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

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

        // The one and only window has been initialized, so show and update it.
        m_pMainWnd->ShowWindow(SW_SHOW);
        m_pMainWnd->UpdateWindow();

        return TRUE;
    }

    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About

    class CAboutDlg : public CDialog
    {
    public:
        CAboutDlg();

    // Dialog Data
        //{{AFX_DATA(CAboutDlg)
        enum { IDD = IDD_ABOUTBOX };
        //}}AFX_DATA

        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CAboutDlg)
        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
        //}}AFX_VIRTUAL

    // Implementation
    protected:
        //{{AFX_MSG(CAboutDlg)
         // No message handlers
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
    };

    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
        //{{AFX_DATA_INIT(CAboutDlg)
        //}}AFX_DATA_INIT
    }

    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CAboutDlg)
        //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
        //{{AFX_MSG_MAP(CAboutDlg)
         // No message handlers
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    // App command to run the dialog
    void CKeysSDIApp::OnAppAbout()
    {
        CAboutDlg aboutDlg;
        aboutDlg.DoModal();
    }

    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIApp commands
The main window has been displayed on the screen, and we’ll take a look at that window next.
Previous | Table of Contents | Next

| Products | Contact Us | About Us | Privacy | Ad Info | Home Use of this site is subject to certain Terms & Conditions, Copyright © 1996-2000 EarthWeb Inc. All rights reserved. Reproduction whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Read EarthWeb's privacy statement.