Sie sind auf Seite 1von 16

Chapter 3

Visual C++ 6.0 IDE Tools


Objectives
Building and customizing a typical MFC application using code generators Describe the tools in the Integrated Development Environment Studio that can be used to develop MFC applications. Create and implement common control bars like Tool bars Status bar Dialog bars.

Introduction
One of the great strength of the visual C++ development system is its capability to create highly functional application skeleton through the AppWizard tools. AppWizard can be used to generate skeleton MFC applications with verity of OLE, database, windowing, help and other options. AppWizard can also be used to create windows DLLs; in addition, specialized exists for creating ActiveX controls and custom AppWizard. This chapter explains in details how to create a windows project and the different type of application that can be created with the help of AppWizard. Process of creating a dialog based application is much shorter than creating a document-based application. ClassWizard is used to add message-handlers with the help of message map page and add member variable with the help of member variable page. This chapter describes how to create and implement control bars like toolbars, status bars, and dialog bars. In general, status bars provide the user with information about the status of the application, such as position of the cursor or the current time. A dialog bar is a control bar with the tool bar characteristics and dialog-box characteristics.

Creating Windows Projects


Types of Windows application created through AppWizard. ClassWizard When you select the New command from Visual Studios File menu, you are presented with the new dialog. When the file tab is selected in this dialog, you are presented with the choice of creating a new file that can be a text file, a source or header file, bitmap, or any of variety of other file types

Page 32

Visual C++ 6.0 IDE Tools

However, if you select the project tab (and the default if you currently have no workspaces open), you are presented instead with a variety of project types as shown in figure below. Several of the choices presented here can be used to create skeleton applications for windows executable programs and for windows DLLs. The following sections examine these options in detail, starting with the most prevalent of AppWizard, the MFC executable AppWizard .

Note :
AppWizard will create your project in the default location in the directory. C:\Program files\MicroSoft Visual Studio\My Project. If you want you can enter a different location in the Location Edit box.

Types of Windows Applications Created through AppWizard


SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 33

Document based MFC Application Dialog based MFC Application

If you select MFC AppWizard (.exe) as the type of your new project, you are presented with step one of a multi step Wizard process as shown in figure below. In this first step you can decide characteristic of your new applications: whether it will have a single-document-based, multiple-document-based, or dialog-based user interface.

A single-document-based application can present only one file to the user at any given time. A good example for such an application is the windows NotePad. A multiple-document-based application, in contrast, can present several documents, at once, each in its own child window. Many word processing application such as Microsofts Word for windows are multiple document-based applications. A Dialog-based application presents a single dialog as its user interface. These applications are used when all user interactions can take place through a single dialog template. An example for a dialog-based application is the windows Character Map. During this first AppWizard step, you can also specify the language of your application. Your language selection defines which standard MFC resource set will be included with your project. You can also use the AppWizard to create a project that supports multiple languages. To do so, create the additional resource files (perhaps by rerunning AppWizard to create dummy project in the desired language) and add the new resource files to your project. Create additional project configurations, including and excluding resource file as needed.

Document based MFC Applications


The creation of single or multiple-document-based (SDI or MDI) applications through AppWizard is nearly identical procedures, consisting of the same AppWizard steps. The project files created by AppWizard for SDI and MDI projects are some what different, in particular, for an MDI project, AppWizard generates an additional class, CChildFrame,

SEED Infotech Ltd.

Page 34

Visual C++ 6.0 IDE Tools

that represents MDI child windows. After you select one of these document-based options, clicking the next button takes you to step 2 of a six-step process. In this step figure as shown below you must specify the level of database support your application will provide. Database support in the form of MFCs open database connectivity (ODBC) and Data Access Objects (DAO) classes.

The meaning of the None option is obvious. The header files only option creates a project with the necessary header files included, but otherwise the projects files will be no different from files in a project with no database support. The remaining two options represent significant additions to your projects view class will be a class derived from CRecordView of CDaoRecordView; second, a new class, derived from CRecordSet or CDaoRecordSet, will be added to your project. The new view class is dialog template-based and represents the fields in a record; the record set class provides an internal representation for those fields and methods to access the underlying tables. The difference between the Database view with file support and Database view without file support options in AppWizard step 2 is simple. The former provides menu and toolbar commands to load and save files; the latter does not. Often, when creating a database application, your applications document class provides merely a transient representation of the database and does not need to be saved; in this case, use the Database view without file support option. Regardless of which of these two options you choose, before you proceed to AppWizard step 3, you must also specify a data source. The data source is a table or set of tables in a database that can be accessed through the ODBC or DAO mechanism. To select a data source, click on the Data Source button. AppWizard step 3 figure shown in below is about support for object linking and embedding and Active-X features. You can specify whether your application supports OLE compound document functionality as a server, container, mini-server, or container -server. You can also specify ActiveX document server support and add automation server and ActiveX control container support; the latter is important if you wish to use ActiveX controls in your applications dialogs.

SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 35

If you select compound document support, you can also specify compound file support .If you select this option, your applications objects will be saved in the compound file format, which allows load on demand and incremental saves (at the expense of the large file size). Depending on which OLE and Active X features you select, the AppWizard may generate additional classes for your application. For OLE servers, these additional classes include CInPlaceFrame (representing the frame-window during in-place editing), and a COleServerItem derived class representing the server object in container applications. For OLE containers, a new COleClientItem derived class is added, representing OLE server items in the containers. In both cases, the base class of your applications document class is also modified. It is derived from COleDocument in the case of containers and COleServerDoc in the case of servers or the container-servers. Step 4 of AppWizard as shown in figure below contains a variety of miscellaneous options. The check boxes for toolbar supports, status bar supports, and support for 3-D controls require little explanation. If you clear the printing and print preview of the checkbox (it is set by default), your application not have a print or a print preview command in its file menu, nor will it provide support for print preview mode. It is generally a good idea to leave this box checked even if you do not wish to provide the printing the commands in the file menu as long as you intend to use the printing and print preview-related features of MFC. Setting the Context-Sensitive-Help checkbox adds a skeletal help project file and help topic files to your application. It also adds the batch file makehelp.bat that can be used to regenerate your project help file. Adding messaging API (MAPI) support your application means two things: First, your application will be linked with the MAPI libraries; second, your application will have a Send menu item in its File menu. Often this is all you need to provide minimal MAPI support for compatibility with Windows 95 application requirements

SEED Infotech Ltd.

Page 36

Visual C++ 6.0 IDE Tools

Setting the windows Sockets check box adds WinSock libraries and header files to your project. However, you are responsible for adding any specific WinSock functionality. Of particular interest in AppWizard step 4 is the advanced option dialog, invoked when you clicked on the Advanced button. Through this dialog, you can specify a variety of additional options that affect your applications and execution in subtle ways.

SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 37

Step 5 of AppWizard as shown in figure below enables you to specify two simple options: whether or not the AppWizard -generated skeleton source should contain comments, and whether the MFC Library should be linked to your project as a static library or a DLL. Usually, specifying source file comments is a good idea. In addition to providing meaningful explanations in your code, the AppWizard also generates TODO comments, which indicate those points in your code that you need to complete or modify manually.

The final in the AppWizard process, step 6 as shown in figure lists the classes the AppWizard is about to create for your application. You can also modify some aspect of class creation at this stage. To complete the AppWizard process, click the finish button. This displays the new project information dialog (incidentally, giving you one more chance to back out and cancel the AppWizard procedure); this dialog displays information about the skeleton project. This information is also saved in your project directory as your projects Readme.txt file The class generated for a basic single-document-based application includes a Document class, a View class, a FrameWindow class, and a CWinApp-derived class representing the application.

SEED Infotech Ltd.

Page 38

Visual C++ 6.0 IDE Tools

After selecting OK AppWizard generates source code, if you compile and build you will get the output as shown below.

Tip :
When you are working with multiple projects and configurations, consider using the full Build toolbar rather than the Build MiniBar. The Build toolbar contains drop down list box controls that allow you to switch between projects or configuration quickly and easily. These controls also remind you which project of configuration you are currently working on.

SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 39

Dialog-based MFC Applications


The AppWizard process for creating dialog-based MFC application is much shorter than creating document-based application. Selecting a Dialog based application in AppWizard step 1 and clicking on the next button takes you to step 2 of a four-step process. The about box option in this steps adds an About command to the dialog control menu; note that the dialog will not have a menu bar. The Context-sensitive Help option adds AppWizard generated skeletal help support in the help form of a help project file, topic files, and the makehelp.bat script for regenerating your applications help file. The 3D controls option needs no explanation. You can also specify automation and Active-X control support. Select the latter option if you wish to use Active-X controls in the dialog. The Windows Sockets option adds WinSock header and library files to your project; however, it is up to you to implement any specific WinSock functionality. You can also specify the title of your application; this text will be displayed in the title bar of the application system dialog box. Step 3 of the AppWizard process for dialog-based application id identical to step 5 for document-based application. Similarly step 4 for dialog-based application is the same as step 6 for document-based ones; however, the list of generated classes is different as shown in figure below. Only two classes are created: one representing the application object, the other representing the applications dialog. In many cases, you may find that a dialog-based AppWizard-generated skeleton application lacks the features that you wish to see in your program. In such cases, consider using an SDI application based on the CFormView class.

Using AppWizard to create MFC -based DLLs


If you use the AppWizard to create an MFC-based DLL skeleton, you are presented with a one-step procedure where you can specify your DLLs characteristics as shown below. The first set of options is where you specify how the DLL should be linked with the MFC library. Linking statically is the most expensive method in terms of disk space and memory requirements .The least expensive is creating an MFC extension DLL; however, these DLLs can, in turn, be called from any application. By setting the automation check box, you enable support for using your DLL as an automation inproc server (An inproc server is server that execute in the process space of the client application, as opposed to using a remote procedure call mechanism for communicating with the client.) Adding WinSock support enable compiling and linking with the WinSock header and library files; however, you must add your own implementation of any WinSock -specific functionality. Finally, you can also specify if you wish to see AppWizard-generated source comments in your DLL.

Custom AppWizard
The custom AppWizard enables you to create custom AppWizards (and if terms like AppWizard-generated AppWizard project skeleton confuse you). A custom AppWizard can be used on the standard AppWizard for MFC applications or DLLs; it can also be based on an existing project or contain only custom steps you define. If you specify that your custom AppWizard be based on an existing project, the second step of the custom AppWizard lets you select with the AppWizard to use. If your custom AppWizard is to be based on an existing project, you can specify the projects path in the second step. For custom AppWizard consisting entirely of custom steps, step 2 of the Custom AppWizard is unavailable.

SEED Infotech Ltd.

Page 40

Visual C++ 6.0 IDE Tools

Using the Component Gallery


Many AppWizard options can also be added to a project through the component gallery. For example, you can add MAPI support, clipboard support, or support for Active X controls to an existing project using the appropriate components from your own project to add support for specific features to your application.

ClassWizard
The ClassWizard is a fundamental tool in the Visual C++ development system; through this tool, you can manipulate your applications CCmdTarget-derived classes in a variety of ways. The ClassWizard presents itself in the form of a dialog with five pages. The first of these pages, the Message Map page, enables you to define message-handler functions for a variety of events, including WM_COMMAND messages generated by controls in dialogs. The Message Maps is also where you specify your implementation for many overridable functions.

At the member variable page, you can add member variables that are associated with dialog controls. Two types of member variables can be added for each control: variables associated with the control object itself. A control can have one variable of each type; however, many kinds of controls do not support variables representing their value. If the member variable represents a control in an ActiveX controls property page, you can also associate an ActiveX control property with the variable.

SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 41

The automation page presents the selection of automation methods and properties to classes that support automation. For Active-X controls, you can add stock method and properties in addition to user-defined ones. You can also specify the level of data binding that specific properties of an Active-X control support.

SEED Infotech Ltd.

Page 42

Visual C++ 6.0 IDE Tools

The ActiveX event page is specific to ActiveX controls and lets you specify which ActiveX events the control may generate. Adding an ActiveX event also adds a firing function for the event. You can also stop event to your ActiveX control.

SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 43

The Class Info page shoes some general information about classes. It can also be used to modify the behavior of ClassWizard as related to this class, by enabling you to change the message filter the ClassWizard applies when displaying the classs message map and by setting up or changing the foreign class associated with this class.

A new class can be added to the project by clicking the New Class button. New classes can be added from scratch, can be generated from a type library, or can be added from an existing header and implementation files. Note that you can only add classes that are derived from base classes that ClassWizard recognizes, other types of classes can be added to your project manually but will not be visible in Class Wizard. Class Information is stored in the class information file. Although usually this file should not be modified manually, Exception to this rule is when you implement your own set of DDX / DDV functions and want to have ClassWizard support for them. So now you are familiar with the wizards which are frequently used while working with Visual C++ 6.0. AppWizard is used only during new project workspace creation. It gives source code for Application framework. There are two ways to add or edit your code. Add manually, or with the help of ClassWizard.

Control Bars
Tool Bars Status Bars Dialog Bars

Windows 95 has unleashed a slew of new common controls that really liven of applications and give them the modern Windows 95 look and feel. The common controls are all stored in a Windows DLL named COMMCTRL.DLL. A control bar is usually a child window of a parent frame window. Class CControlBar provides the common functionality of all toolbars, status bars and dialog bars.

SEED Infotech Ltd.

Page 44

Visual C++ 6.0 IDE Tools

Tool Bars
A toolbar is a control bar that displays a row of bitmapped buttons that activate commands. Pressing a toolbar button is equivalent to choosing a menu item. The buttons can be configured to appear and behave as push buttons, radio buttons, or check boxes. A toolbar is usually aligned to the top of a frame window, but an MFC toolbar can be made dockable or floating. A toolbar can display tool tips as the user moves the mouse over the toolbars buttons. MFC supplies class CToolBar to manage toolbars. Displaying a ToolBar is a three-step process 1) Create a toolbar resource with each button having a unique ID. 2) Call Create member function of the CToolBar class this creates a CToolBar object. 3) Call LoadToolBar member function of CToolBar class this displays the toobar on the screen. Following code creates and displays a toolbar // SampleWnd.h class CSampleWnd:public CFrameWnd { CToolBar* tb; public: int OnCreate(LPCREATESTRUCT); DECLARE_MESSAGE_MAP( ) }; // SampleWnd.cpp BEGIN_MESSAGE_MAP(CSampleWnd, CFrameWnd) ON_WM_CREATE( ) END_MESSAGE_MAP( ) int CSampleWnd :: OnCreate(LPCREATESTRUCT lpCreateStruct) { tb = new CToolBar; tb->Create ( this ); tb->LoadToolBar ( IDR_TOOLBAR1 ); EnableDocking ( CBRS_ALIGN_ANY ); Tb-> EnableDocking ( CBRS_ALIGN_ANY ); DockControlBar ( tb ); return TRUE; }

Status Bars
A status bar is a control bar that contains text-output panes, or indicators. The output panes are commonly used as message lines and as status indicators. Message line includes the command help-message lines that explain the selected menu or toolbar command in the leftmost pane of the default status bar created by AppWizard. Status indicator includes the SCROLL LOCK, NUM LOCK, and other keys. Status bars are usually aligned to the bottom of a frame window. MFC class to manage status bar is CStatusBar. The Status bar can also display dynamic messages like row and column numbers in a word processor or X and Y coordinates in a graphics editor application. To displays messages in a particular pane use SetPaneText function of CStatusBar class. Following code creates a status bar with four pane a blank stretchy pane, NUM lock indicator, CAPS lock indicator, & SCROLL lock indicator. The panes are numbered from 0.

SEED Infotech Ltd.

Visual C++ 6.0 IDE Tools

Page 45

// SampleWnd.h class CSampleWnd:public CFrameWnd { CStatuaBar *sb; CToolBar *tb; public: int OnCreate(LPCREATESTRUCT) void OnMouseMove(UINT i, CPoint pt) DECLARE_MESSAGE_MAP( ) };// SampleWnd.cpp BEGIN_MESSAGE_MAP(CSampleWnd, CFrameWnd) ON_WM_CREATE( ) ON_WM_MOUSEMOVE( ) END_MESSAGE_MAP( ) int CSampleWnd :: OnCreate(LPCREATESTRUCT lpCreateStruct) { tb = new CToolBar; tb->Create(this); tb->LoadToolBar (IDR_TOOLBAR1); EnableDocking ( CBRS_ALIGN_ANY ); tb->EnableDocking ( CBRS_ALIGN_ANY ); DockControlBar ( tb ); sb = new CStatusBar; sb->Create(this); sb->SetIndicators(indicators, sizeof(indicators)/sizeof(int)); return TRUE; } void CSampleWnd :: OnMouseMove(UINT i, CPoint pt) { char str[20]; sprintf(str, X=%d, Y=%d, pt.x, pt.y); sb->SetPaneText(0, str); }

Dialog Bars
A dialogbar is a control bar, based on a dialog-template resource, with the functionality of a modeless dialog box. Dialog bars can contain any Windows control. Dialog bars can be aligned to the top, bottom, left, or right side of a frame window. MFC supports dialog bars with class CDialogBar.

Following are the steps to display a dialogbar 1) Create a dialog bar resource with the desired controls from the control palette. 2) Call the Create member function of the CDialogBar class.

SEED Infotech Ltd.

Page 46

Visual C++ 6.0 IDE Tools

Following code creates and displays a toolbar // SampleWnd.h class CSampleWnd:public CFrameWnd { CDialogBar *db; public: int OnCreate(LPCREATESTRUCT); DECLARE_MESSAGE_MAP( ) };

// SampleWnd.cpp BEGIN_MESSAGE_MAP(CSampleWnd, CFrameWnd) ON_WM_CREATE( ) END_MESSAGE_MAP( ) int CSampleWnd :: OnCreate(LPCREATESTRUCT lpCreateStruct) { db = new CDialogBar; tb->Create(this, IDD_DIALOG_BAR, CBRS_TOP, ID_VIEW_MYDIALOGBAR); return TRUE; }

Summary
There are two types of application created through AppWizard Document based and Dialog based. Single document based application can present a single file to the user at a time while Multiple document based application can present several documents. AppWizard allows you to specify the language of your application. ClassWizard is a fundamental tool through which you can manipulate your applications CCmdTarget-derived classes in a variety of ways. ClassWizard is used to add message-handlers and member variables to your class. CControlBar provides the common functionality of all toolbars, status bars and dialog bars. MFC supports ToolBar, StatusBar and DialogBar with CToolBar, CStatusBar and CDialogBar class respectively.

Quiz
1) 2) 3) 4) 5) Which tool do you normally use to start a new MFC-based application? Which are the types of application created by AppWizard? Which tool is used to add message-handlers? Which class in MFC encapsulates control bars? What are dialog bars? Write a code to create and display dialog bar?

SEED Infotech Ltd.

Das könnte Ihnen auch gefallen