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
### Creating the KeysSDI Project The KeysSDI program will be a little more real-world than the HelloDlg program. In this program, we’ll read the keys typed by the user, store them, and display them in the program’s single window. Use the Visual C++ AppWizard to create a new EXE project named KeysSDI, selecting the Single Document option in the AppWizard’s first screen and then clicking Finish. This creates a new single-window program named KeysSDI. Visual C++ has also created a ReadMe.txt file outlining the parts of the project. Here’s what’s in ReadMe.txt:
    ========================================================================
           MICROSOFT FOUNDATION CLASS LIBRARY : KeysSDI
    ========================================================================

    AppWizard has created this KeysSDI application for you.  This application
    not only demonstrates the basics of using the Microsoft Foundation Classes
    but is also a starting point for writing your application.

    This file contains a summary of what you will find in each of the files that
    make up your KeysSDI application.

    KeysSDI.dsp
        This file (the project file) contains information at the project level
    and
        is used to build a single project or subproject. Other users can share
    the
        project (.dsp) file, but they should export the makefiles locally.

    KeysSDI.h
        This is the main header file for the application.  It includes other
        project specific headers (including Resource.h) and declares the
        CKeysSDIApp application class.

    KeysSDI.cpp
        This is the main application source file that contains the application
        class CKeysSDIApp.

    KeysSDI.rc
        This is a listing of all of the Microsoft Windows resources that the
        program uses.  It includes the icons, bitmaps, and cursors that are
    stored
        in the RES subdirectory.  This file can be directly edited in Microsoft
        Visual C++.

    res\KeysSDI.ico
        This is an icon file, which is used as the application’s icon.  This
        icon is included by the main resource file KeysSDI.rc.

    res\KeysSDI.rc2
        This file contains resources that are not edited by Microsoft
        Visual C++.  You should place all resources not editable by
        the resource editor in this file.

    KeysSDI.clw
        This file contains information used by ClassWizard to edit existing
        classes or add new classes.  ClassWizard also uses this file to store
        information needed to create and edit message maps and dialog data
        maps and to create prototype member functions.

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

    For the main frame window:

    MainFrm.h, MainFrm.cpp
        These files contain the frame class CMainFrame, which is derived from
        CFrameWnd and controls all SDI frame features.

    res\Toolbar.bmp
        This bitmap file is used to create tiled images for the toolbar.
        The initial toolbar and status bar are constructed in the CMainFrame
        class. Edit this toolbar bitmap using the resource editor and
        update the IDR_MAINFRAME TOOLBAR array in KeysSDI.rc to add
        toolbar buttons.

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

    AppWizard creates one document type and one view:

    KeysSDIDoc.h, KeysSDIDoc.cpp - the document
        These files contain your CKeysSDIDoc class.  Edit these files to
        add your special document data and to implement file saving and loading
        (via CKeysSDIDoc::Serialize).

    KeysSDIView.h, KeysSDIView.cpp - the view of the document
        These files contain your CKeysSDIView class.
        CKeysSDIView objects are used to view CKeysSDIDoc objects.

    /////////////////////////////////////////////////////////////////////////////
    Other standard files:

    StdAfx.h, StdAfx.cpp
        These files are used to build a precompiled header (PCH) file
        named KeysSDI.pch and a precompiled types file named StdAfx.obj.

    Resource.h
        This is the standard header file, which defines new resource IDs.
        Microsoft Visual C++ reads and updates this file.

    /////////////////////////////////////////////////////////////////////////////
    Other notes:

    AppWizard uses “TODO:” to indicate parts of the source code you
    should add to or customize.

    If your application uses MFC in a shared DLL, and your application is
    in a language other than the operating system’s current language, you
    will need to copy the corresponding localized resources MFC40XXX.DLL
    from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
    and rename it to be MFCLOC.DLL.  (“XXX” stands for the language abbreviation.
    For example, MFC40DEU.DLL contains resources translated to German.)  If you
    don’t do this, some of the UI elements of your application will remain in
    the
    language of the operating system.

    /////////////////////////////////////////////////////////////////////////////
The actual programming is easy to do, so let’s do that now. After we get the program working, we’ll dissect it section by section to review the parts of a Visual C++ program. #### Storing Keys in KeysSDI To start, we’ll set up space in memory for the string of characters that the user types. Click the FileView tab in Visual C++ to display an overview of the project in the Project window (the window on the left in the Visual C++ IDE) file by file and open the folder marked Header Files, double-clicking the entry KeysSDIDoc.h to open that file. This file is the header file for the program’s document object (we’ll review this and other objects later in this chapter). We set aside an MFC CString object named text for the string data we’ll store in this program by adding the following line of code to KeysSDIDoc.h:
    // KeysSDIDoc.h : interface of the CKeysSDIDoc class
    //
    /////////////////////////////////////////////////////////////////////////////

    #if
    !defined(AFX_KEYSSDIDOC_H__701B1ADB_9BB7_11D1_887F_D42B07C10710__INCLUDED_)
    #define AFX_KEYSSDIDOC_H__701B1ADB_9BB7_11D1_887F_D42B07C10710__INCLUDED_

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

    class CKeysSDIDoc : public CDocument
    {
    protected: // create from serialization only
        CKeysSDIDoc();
        DECLARE_DYNCREATE(CKeysSDIDoc)

    // Attributes
    public:
        CString text;                                                   ⇐
    // Operations
    public:
        .
        .
        .
We will also initialize this new object to an empty string, “”, in the constructor CKeysSDIDoc(), which is in the file KeysSDIDoc.cpp. Open the Source Files folder now and open KeysSDIDoc.cpp, adding this line of code:
    // KeysSDIDoc.cpp : implementation of the CKeysSDIDoc class
    //

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

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

    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIDoc

    IMPLEMENT_DYNCREATE(CKeysSDIDoc, CDocument)

    BEGIN_MESSAGE_MAP(CKeysSDIDoc, CDocument)
        //{{AFX_MSG_MAP(CKeysSDIDoc)
         // 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
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CKeysSDIDoc construction/destruction

    CKeysSDIDoc::CKeysSDIDoc()
    {
        text = “”;                                            ⇐
    }
        .
        .
        .
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.