home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / help / iwfwsm35.hlp (.txt) < prev    next >
Encoding:
OS/2 Help File  |  1996-02-23  |  26.2 KB  |  592 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Project Smarts ΓòÉΓòÉΓòÉ
  3.  
  4. Use Project Smarts to create a default project or projects that are 
  5. preconfigured for certain programming tasks. 
  6.  
  7. To create a project, select the type of project you want to create, and then 
  8. click on the Next>> push button to customize the project.  A fully-configured 
  9. project with template source files is created for you. A README file tells you 
  10. how to build and run the project. 
  11.  
  12. To create an empty project with default settings, select Default project from 
  13. the Project types list box.  Specify the project title, working directory, and 
  14. where you want the project created on the Location page. No source files are 
  15. created for you.  You can create source files by selecting the Edit button on 
  16. the project toolbar to bring up the VisualAge for C++ editor. 
  17.  
  18. If you create any of the other project types, Project Smarts creates a 
  19. pre-configured project that comes with template source files that you can 
  20. modify to meet your application-specific requirements. 
  21.  
  22. Note:  You can also create pre-configured projects by copying one of the sample 
  23. projects. 
  24.  
  25.  
  26. ΓòÉΓòÉΓòÉ 2. Location Page ΓòÉΓòÉΓòÉ
  27.  
  28. In the Location page, you can specify the following information: 
  29.  
  30.  Project title 
  31.       The title for the project.  This title appears on the title bar of the 
  32.       project window.  If you are using Windows 95, it also appears below the 
  33.       project icon if the project is on your "Desktop". 
  34.  
  35.  Source directory 
  36.       This is the directory where the files are to be generated, and will also 
  37.       be the working directory of your project. It will be created for you if 
  38.       it does not exist. 
  39.  
  40.       If you create the Default Project, no files will be generated in this 
  41.       directory, but the directory will be created for you if it does not 
  42.       exist. 
  43.  
  44.  Where to create project 
  45.       The container shows you all the directories in the drive selected in the 
  46.       Drives list.  You can select another drive from the Drives field to 
  47.       update the container with all the directories from your selected drive. 
  48.       Select the directory where you want the project file to be stored. The 
  49.       project file will be created in the directory you select from the 
  50.       container. 
  51.  
  52.  Project file name 
  53.       This is the name that you want to give the created project file. Specify 
  54.       an unqualified file name.  For example, if you specify the project file 
  55.       name MYPROJECT, Project Smarts creates the project file MYPROJECT.IWP, 
  56.       with a corresponding project options file, MYPROJECT.IWO. 
  57.  
  58.  
  59. ΓòÉΓòÉΓòÉ 3. Source Files Page ΓòÉΓòÉΓòÉ
  60.  
  61. Use the Source Files page to specify the filename stem of the main source files 
  62. in your project. 
  63.  
  64. For example, if you specify the file stem HELLO, your C++ main source files 
  65. will be named HELLO.CPP, HELLO.HPP, HELLO.H, HELLO.MAK, HELLO.RC, and the 
  66. executable will be called HELLO.EXE. 
  67.  
  68. Any .C, .VBB, .RTF, .IPF, and .HLP files will be similarly named. 
  69.  
  70.  
  71. ΓòÉΓòÉΓòÉ 4. Prolog Page ΓòÉΓòÉΓòÉ
  72.  
  73. In the Prolog page, specify the prolog text that is to be placed at the 
  74. beginning of all your generated source files.  The text is saved in a file so 
  75. that the next time you create a project, the same prolog is used. 
  76.  
  77. Prolog text is saved for projects whose source files use the same comment 
  78. syntax.  For example, the same prolog text is saved for the C++ Hello World, UI 
  79. Class Library, and C++ Dynamic Link Library projects because they use the same 
  80. comment style.  Similarly, the same prolog text is saved for IPF script files 
  81. that produce context-sensitive help or online documents. 
  82.  
  83. You can use variables from the Name, Date, Version, and Copyright fields when 
  84. writing your prolog text.  These fields are represented by the following 
  85. variables: 
  86.  
  87.  $NAME$       Substituted by the value in the Your name field. 
  88.  
  89.  $DATE$       Substituted by the value in the Today's date field. 
  90.  
  91.  $VERSION$    Substituted by the value in the Version field. 
  92.  
  93.  $COPYRIGHT$  Substituted by the value in the Copyright field. 
  94.  
  95.  
  96. ΓòÉΓòÉΓòÉ 5. Title Page ΓòÉΓòÉΓòÉ
  97.  
  98. In the Title page, you specify the title of the generated visual application. 
  99. This text is displayed on the title bar of the application's frame window. 
  100.  
  101. You also use this page to specify the title of a document or online help 
  102. source.  This title is displayed on the the help window's title bar. 
  103.  
  104.  
  105. ΓòÉΓòÉΓòÉ 6. Runtime Page ΓòÉΓòÉΓòÉ
  106.  
  107. In the Runtime page, you select the version of the VisualAge for C++ runtime 
  108. library you want to use. 
  109.  
  110. Select Single-threaded if your program will only run in a single thread. 
  111. Select Multi-threaded if you plan to perform processing in secondary threads 
  112. and if you plan to use multithreaded libraries, such as the Open User Interface 
  113. Class Library. 
  114.  
  115. The multithread version of the runtime library has slightly more overhead than 
  116. the single thread version, but the difference is almost insignificant. If you 
  117. need optimum performance from a single-threaded program, use the single thread 
  118. library. Using the multi-thread version of the library is recommended for most 
  119. applications. 
  120.  
  121. Related Programming Guide Topics: 
  122.  
  123.   Creating Multithread Programs 
  124.   Choosing Libraries 
  125.  
  126.  
  127. ΓòÉΓòÉΓòÉ 7. Linking Page ΓòÉΓòÉΓòÉ
  128.  
  129. In the Linking page, you specify whether you want to link statically or 
  130. dynamically to the VisualAge for C++ runtime library. 
  131.  
  132. Linking Statically means that the code for all the runtime library functions 
  133. called by your program is copied into your executable file.  This results in a 
  134. larger executable file.  And if many copies of your program are run at the same 
  135. time, there will be one copy of the library functions in memory for each 
  136. program.  Statically linked programs, however, are easier to distribute because 
  137. the library functions are part of your executable file. 
  138.  
  139. Linking Dynamically means that the code for the VisualAge for C++ runtime 
  140. library functions are not copied into your executable file.  Instead, the 
  141. function code stays in a separate VisualAge for C++ DLL file and your calls to 
  142. the functions are resolved at load time.  You will have a smaller executable 
  143. file, and there will only be one copy of the runtime library functions in 
  144. memory for all the programs that use them.  However, dynamically linked 
  145. programs can be harder to distribute because a separate DLL file that contains 
  146. the library functions must also be distributed. 
  147.  
  148. You cannot distribute the VisualAge for C++ runtime library as is because that 
  149. would be in violation of the licensing agreement. You must create your own 
  150. runtime library DLL for distribution. 
  151.  
  152. Related User's Guide Topic: 
  153.  
  154.   Static and Dynamic Linking 
  155.  
  156.  
  157. ΓòÉΓòÉΓòÉ 8. Initialization/Termination Page ΓòÉΓòÉΓòÉ
  158.  
  159. In the Initialization/Termination page, you specify whether you want to write 
  160. your own custom _DLL_InitTerm function. 
  161.  
  162. Select Custom if your DLL requires initialization and termination processing in 
  163. addition to that performed for the runtime environment. Otherwise, select 
  164. Default. 
  165.  
  166.  
  167. ΓòÉΓòÉΓòÉ 9. Export Method Page ΓòÉΓòÉΓòÉ
  168.  
  169. In the Export Method page, you can specify how you want the symbols in your C++ 
  170. DLL exported. There are three different methods, each having their own 
  171. advantages and disadvantages: 
  172.  
  173.  Ordinal 
  174.       Exporting by ordinal is the simplest method to use, but it is the most 
  175.       difficult to maintain.  To export all the symbols of a class by ordinal, 
  176.       you mark their definition with the _Export keyword, like this: 
  177.  
  178.               class _Export foo
  179.               {
  180.                 :
  181.               };
  182.  
  183.       (You can also apply the _Export keyword to specific symbols like member 
  184.       functions and data members.) 
  185.  
  186.       When a class is exported using the _Export keyword, all the public 
  187.       symbols in the class are exported only by ordinals that are assigned by 
  188.       the compiler.  When your DLL is updated, the compiler may assign 
  189.       different ordinals to the symbols, and may therefore cause the clients of 
  190.       your DLL to change the way they refer to your exported symbols. 
  191.  
  192.       It is also important to know that accessing exported symbols by ordinal 
  193.       is the most efficient way. 
  194.  
  195.  Assigned name and ordinal 
  196.       This method requires that you explicitly export each member of a class. 
  197.       You can optionally assign a name to each symbol so that it is known by 
  198.       that name to clients of your class. You can also assign an ordinal to the 
  199.       symbol so that the same ordinal is generated for the symbol each time you 
  200.       update the DLL. 
  201.  
  202.       This method is the most convenient for the clients of your class if they 
  203.       do not have an import library to link to, and if they do not want to 
  204.       refer to your symbols via their ordinals. 
  205.  
  206.       To export your classes in this manner, you must add a #pragma export 
  207.       directive for each member you want to export, like this: 
  208.  
  209.               #pragma(foo::memberFcn, "Fcn", 5)
  210.  
  211.       In this example, the member function memberFcn was exported with the 
  212.       assigned name "Fcn" and the ordinal 5. 
  213.  
  214.       There are some members that you must export: 
  215.  
  216.        You must always export constructors and destructors. 
  217.  
  218.        If an inlined or exported function uses private or protected members, 
  219.         you must also export those members. 
  220.  
  221.        You should also export all static members, otherwise clients of your 
  222.         class will not be able to debug their code because the reference to the 
  223.         static data members cannot be resolved. 
  224.  
  225.  Mangled name 
  226.       This method of exporting C++ symbols is the easiest to maintain because 
  227.       changing the DLL will not affect its clients. Also, this method enables 
  228.       you to easily export virtual function tables (VFTs). 
  229.  
  230.       This method uses the CPPFILT utility to generate a list of all the symbol 
  231.       names in your object files (including the VFT), and places this list into 
  232.       a module definition (.DEF) file that tells the compiler and linker what 
  233.       symbols need to be exported. 
  234.  
  235.       Even though the symbols in your classes are exported by their mangled 
  236.       names, clients of your class could still access them as if your symbols 
  237.       were statically linked as long as they had an import library they could 
  238.       link to. An import library for your DLL is automatically built for your 
  239.       C++ DLL using the IMPLIB function. 
  240.  
  241.       Using this method, your source files do not need any special keywords or 
  242.       pragmas to mark a symbol for export.  All the export information is 
  243.       contained in the .DEF file. 
  244.  
  245.  Related How Do I Topic: 
  246.  
  247.   Exporting C++ members from a DLL 
  248.  
  249.  
  250. ΓòÉΓòÉΓòÉ 10. Document Type Page ΓòÉΓòÉΓòÉ
  251.  
  252. An IPF file can be compiled to either an online help file or an online book. 
  253. Select Online document if you intend to produce an online book. Select Help if 
  254. you intend to produce context-sensitive help information. 
  255.  
  256.  
  257. ΓòÉΓòÉΓòÉ 11. Resource Files Page ΓòÉΓòÉΓòÉ
  258.  
  259. In the Resource Files page, you specify whether you already have one or more 
  260. resource (.RC) files that you want to use for this project, or whether you want 
  261. Project Smarts to generate a template resource file for you. 
  262.  
  263. If you want to use your existing resource files, enter the directory where 
  264. these files can be found.  All the .RC files in the specified directory are 
  265. copied over to the project's working directory (as specified in the Location 
  266. page). Any icon or bitmap files found in the specified directory are also 
  267. copied to the project's working directory. When the project is created, you can 
  268. run the Build action to build a resource DLL from your resource files. 
  269.  
  270. Related User's Guide Topic: 
  271.  
  272.   Using Resource Tools 
  273.  
  274.  
  275. ΓòÉΓòÉΓòÉ 12. Language Page ΓòÉΓòÉΓòÉ
  276.  
  277. In the Language page, you specify what language you want for the generated 
  278. source files, C or C++. 
  279.  
  280.  
  281. ΓòÉΓòÉΓòÉ 13. Target Names Page ΓòÉΓòÉΓòÉ
  282.  
  283. In the Target Names page, you specify the name of the Direct-to-SOM dynamic 
  284. link library that you want the DTS project to build.  Enter an unqualified name 
  285. without an extension in the DLL target name entry field.  This name will also 
  286. be used to name the main source files of the DLL. 
  287.  
  288. The Also create a client EXE project with a main program check box lets you 
  289. specify whether you want Project Smarts to also create a client EXE program 
  290. that uses the DTS classes in your DLL. If you do want a client program created 
  291. for you, indicate the name of the target EXE as an unqualified name without an 
  292. extension in the Target name entry field.  The name will also be used to name 
  293. the main source files of the client EXE program. 
  294.  
  295. If you choose to create a client EXE program, Project Smarts creates two 
  296. projects for you:  a client EXE project (titled as you specified in the 
  297. Location page.), and a DTS DLL subproject. The project hierarchy reflects the 
  298. dependency relationship between the EXE and DLL projects. 
  299.  
  300. If you choose to create only the DTS DLL, Project Smarts creates only one 
  301. project for you, titled as you specified in the Location page. 
  302.  
  303.  
  304. ΓòÉΓòÉΓòÉ 14. DTS Classes Page ΓòÉΓòÉΓòÉ
  305.  
  306. In the DTS Classes page, list the names of C++ classes you want packaged as SOM 
  307. (System Object Model) classes. Enter one class name per line. 
  308.  
  309. Select the Use long names for header files check box if you want Project Smarts 
  310. to generate source files with long names.  If you do not select the check box, 
  311. the generated files will be abbreviated to FAT file system format, based on the 
  312. class names. 
  313.  
  314.  
  315. ΓòÉΓòÉΓòÉ 15. Object Framework Page ΓòÉΓòÉΓòÉ
  316.  
  317. In the Object Framework page, specify whether you want your application to work 
  318. in the SOM (System Object Model) or DSOM (Distributed SOM) framework. 
  319.  
  320. The power of SOM technology comes from the fact that SOM insulates the client 
  321. of an object from the object's implementation.  The power of DSOM lies in the 
  322. fact that DSOM insulates the client of an object from the object's location. 
  323.  
  324. Distributed SOM (or DSOM) provides a framework that allows application programs 
  325. to access objects across address spaces. That is, application programs can 
  326. access objects in other processes, even on different machines. Both the 
  327. location and implementation of an object are hidden from a client, and the 
  328. client accesses the object (by way of method calls) in the same manner 
  329. regardless of its location. 
  330.  
  331. For more information about SOM and DSOM, see the SOM Programming Guide. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 16. Access Method Page ΓòÉΓòÉΓòÉ
  335.  
  336. The Data Access Builder supports DB2 version 2.1 directly through your choice 
  337. of embedded SQL (ESQL) or the DB2 Call Level Interface (DB2 CLI). In many 
  338. cases, embedded SQL, because of its static binding, provides a performance 
  339. advantage over DB2 CLI's dynamic binding. For more information on the 
  340. advantages and disadvantages of static versus dynamic binding, please refer to 
  341. your DB2 documentation. 
  342.  
  343. The Data Access Builder  allows access to a multitude of database products 
  344. through its Open Database Connectivity (ODBC) driver manager and related 
  345. drivers. 
  346.  
  347. If you are using a product supported by a compatible ODBC 2.0 driver (such as 
  348. Sybase 10 and Oracle 7), select ODBC as your access method. 
  349.  
  350. For more information, see the section on Supported Database Products in the 
  351. User's Guide. 
  352.  
  353.  
  354. ΓòÉΓòÉΓòÉ 17. Component Page ΓòÉΓòÉΓòÉ
  355.  
  356. The first decision you need to make when creating components with the Compound 
  357. Document Framework is whether you want to create a container component or a 
  358. server component. 
  359.  
  360. A server component can be embedded inside container components; however, it 
  361. cannot have objects linked to it or embedded inside it. 
  362.  
  363. A container component has all of the features of a server component so it can 
  364. also be embedded inside other containers.  However, it can also have OLE 
  365. objects embedded in it. Container components use Structured Storage to save 
  366. their native data, along with data in the embedded components. 
  367.  
  368. Most Win32 applications are containers, but some, such as a paintbrush 
  369. application that can be inserted inside a word processor document, are server 
  370. components. 
  371.  
  372. Related IBM Open Class Library User's Guide Topics: 
  373.  
  374.   Introducing the Compound Document Framework 
  375.   Creating a Server 
  376.   Creating a Container 
  377.  
  378.  
  379. ΓòÉΓòÉΓòÉ 18. Application Name Page ΓòÉΓòÉΓòÉ
  380.  
  381. The Compound Document Framework helps you create OLE-enabled applications. 
  382. Much of OLE's handling of objects is accomplished through the Win32 registry. 
  383.  
  384. The application short name registers the component you create and it also 
  385. appears on the context menu for any objects the component can edit. 
  386.  
  387. The long name is displayed on the application's title bar. 
  388.  
  389. If you check the Use long names for header files checkbox, you can specify long 
  390. file names (that is, more than 8 characters) and Project Smarts will generate 
  391. the .hpp, .cpp, .rc, and .reg files using these names without shortening it. 
  392. Check this box only if your file system can take long names. 
  393.  
  394. Related IBM Open Class Library User's Guide Topic: 
  395.  
  396.   Introducing the Compound Document Framework 
  397.  
  398.  
  399. ΓòÉΓòÉΓòÉ 19. Model Class Page ΓòÉΓòÉΓòÉ
  400.  
  401. A component is comprised of a model and a view. The model defines and stores 
  402. the application data.  When embedding a component it is the component's model 
  403. data that is stored inside a container's Structured Storage file. 
  404.  
  405. The Compound Document Framework provides an IModel base class which defines the 
  406. minimum behavior that a model class needs, including support for streaming. 
  407. The derived model class that Project Smarts creates for you can be customized 
  408. to meet the unique needs of your application by adding member functions and 
  409. data. 
  410.  
  411. Enter the class name of the model in the Model Class Name field. 
  412.  
  413. Related IBM Open Class Library User's Guide Topics: 
  414.  
  415.   Introducing the Compound Document Framework 
  416.   Creating a Server Model 
  417.   Creating a Container Model 
  418.   The imodel.hpp header file 
  419.  
  420.  
  421. ΓòÉΓòÉΓòÉ 20. View Class Page ΓòÉΓòÉΓòÉ
  422.  
  423. A component is comprised of a model and a view.  The view defines the manner in 
  424. which data is presented to the end-user. 
  425.  
  426. The Compound Document Framework provides an IView base class which defines the 
  427. minimum behavior that a view needs. The derived model class that you create can 
  428. be customized to meet the unique needs of your application by adding member 
  429. functions and data. 
  430.  
  431. Enter the class name of the view in the View Class Name field. 
  432.  
  433. Related IBM Open Class Library User's Guide Topics: 
  434.  
  435.   Introducing the Compound Document Framework 
  436.   Creating a Server View 
  437.   The iview.hpp header file 
  438.  
  439.  
  440. ΓòÉΓòÉΓòÉ 21. File Extension Page ΓòÉΓòÉΓòÉ
  441.  
  442. When your application saves a file, a 3-character extension needs to be 
  443. assigned to the file to differentiate it from other files in the file system. 
  444. Specify the filename extension that should always be assigned during File save 
  445. operations. 
  446.  
  447. Related IBM Open Class Library User's Guide Topic: 
  448.  
  449.   The imodel.hpp header file 
  450.  
  451.  
  452. ΓòÉΓòÉΓòÉ 22. Datastore Page ΓòÉΓòÉΓòÉ
  453.  
  454. In the Datastore name field, enter the name of the database that contains the 
  455. tables or views that you want to access in your application. 
  456.  
  457. In the Class name field, enter a name that is representative or descriptive of 
  458. the data that you will be accessing. 
  459.  
  460. When Data Access Builder generates your access classes, it uses a class name 
  461. that you specified in this field to name the generated classes. For example, if 
  462. your application will be accessing a car dealer's database that contains all 
  463. pertinent information about the inventory of automobiles (such as make, color, 
  464. serial number), you may choose car as your class name. The generated Manager 
  465. and Datastore classes will be named by the Data Access Builder as "carManager" 
  466. and "carDatastore", respectively. 
  467.  
  468. In the Source file stem field, enter the name that you want the Data Access 
  469. Builder to use when generating files. The generated file names consist of the 
  470. specified file stem and a file extension that is generated by the Data Access 
  471. Builder. This name should not be changed. The Data Access Builder uses specific 
  472. file extensions so that the files that it generates can be used by the compiler 
  473. or the appropriate tool. 
  474.  
  475. If your file system limits the length of the file names, the Data Access 
  476. Builder  truncates the file stem accordingly. 
  477.  
  478. For more information, see the section Class Settings Notebook - Names Page in 
  479. the User's Guide. 
  480.  
  481.  
  482. ΓòÉΓòÉΓòÉ 23. Access Classes Page ΓòÉΓòÉΓòÉ
  483.  
  484. Based on your requirements, select the type of source code that you want the 
  485. Data Access Builder to generate. If you will be programming C++ applications, 
  486. select the C++ button. If you want to generate system objects that provide 
  487. release-to-release binary compatibility and language-independent access, select 
  488. the IDL(SOM) button. 
  489.  
  490. For more information, see the section Selecting the Code Generation Options of 
  491. the User's Guide. 
  492.  
  493.  
  494. ΓòÉΓòÉΓòÉ 24. Help Page ΓòÉΓòÉΓòÉ
  495.  
  496. In this page, you can specify the type of help file that Visual Builder is 
  497. going to create for you. Select IPF if you want to generate help information 
  498. using IBM's IPF format. Select RTF if you want to generate help information 
  499. using Microsoft's RTF format. 
  500.  
  501.  
  502. ΓòÉΓòÉΓòÉ 25. Executable Page ΓòÉΓòÉΓòÉ
  503.  
  504. In this page, you can specify whether you want to create an EXE or a DLL file. 
  505. If you select DLL, you have the option of specifying a project that has a 
  506. client main program. In this case, the main project is created with a Data 
  507. Access DLL subproject. 
  508.  
  509.  
  510. ΓòÉΓòÉΓòÉ 26. Include Path Page ΓòÉΓòÉΓòÉ
  511.  
  512. In this page, specify the directories that contain the header files used by 
  513. this application. 
  514.  
  515.  
  516. ΓòÉΓòÉΓòÉ 27. Layout Page ΓòÉΓòÉΓòÉ
  517.  
  518. In this page, you can specify if the online information will take up the entire 
  519. screen or will be displayed in two panels. Select Whole if you want the 
  520. information to take up the entire screen. Select Split if you want the 
  521. information to be displayed in two screens. In this case, you can use the 
  522. slider to indicate the display ratio of the two screens. 
  523.  
  524.  
  525. ΓòÉΓòÉΓòÉ 28. DSOM Page ΓòÉΓòÉΓòÉ
  526.  
  527. In this page, you must specify the name of the Interface Repository (IR) and 
  528. the server that will be associated with the SOM class. 
  529.  
  530. An object can be accessed remotely by DSOM only if its class interface and 
  531. implementation is registered in the Interface Repository. Enter the name of the 
  532. local IR to be used in the Interface repository file name field. 
  533.  
  534. In DSOM, each SOM class must be associated with a server. In turn, the server 
  535. is registered with DSOM in an Implementation Repository. Enter the name of the 
  536. server that will be associated with the SOM class in the Server name  field. 
  537.  
  538.  
  539. ΓòÉΓòÉΓòÉ 29. Push Buttons ΓòÉΓòÉΓòÉ
  540.  
  541. This section describes the push buttons on the bottom of the Project Smarts 
  542. notebook: 
  543.  
  544.   <<Back 
  545.   Next>> 
  546.   Help 
  547.   Cancel 
  548.   Done 
  549.  
  550.  
  551. ΓòÉΓòÉΓòÉ 29.1. <<Back and Next>> ΓòÉΓòÉΓòÉ
  552.  
  553. Use the Back>> and Next>> push buttons to navigate through the Project Smarts 
  554. notebook. 
  555.  
  556. Back>> takes you to the previous page in the notebook, and Next>> takes you 
  557. forward a page. 
  558.  
  559.  
  560. ΓòÉΓòÉΓòÉ 29.2. Help ΓòÉΓòÉΓòÉ
  561.  
  562. Click on the Help push button to get help about the top page of the Project 
  563. Smarts notebook. The page help will give you more information about the choices 
  564. on the page, and, if applicable, link you to related topics in the VisualAge 
  565. for C++ User's Guide and other publications. 
  566.  
  567.  
  568. ΓòÉΓòÉΓòÉ 29.3. Cancel ΓòÉΓòÉΓòÉ
  569.  
  570. Click on the Cancel push button to exit from Project Smarts without creating 
  571. any projects or saving any settings. 
  572.  
  573.  
  574. ΓòÉΓòÉΓòÉ 29.4. Done ΓòÉΓòÉΓòÉ
  575.  
  576. Click on the Done push button when you are ready to create your project.  When 
  577. you click on Done, files are copied to the source directory you specified on 
  578. the Location page, and one or more projects and subprojects are created for 
  579. you. The main project is opened after it is created. 
  580.  
  581.  
  582. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  583.  
  584. A project file is the physical representation of a project. It has the 
  585. extension .IWP, and can be stored anywhere on the file system.  If it is stored 
  586. in a directory on the file system that represents a Windows 95 folder, the 
  587. project file is visible as an object in the folder.  The title that appears 
  588. below the project icon is the project's title. 
  589.  
  590. Every project also has an options file where the option settings for the 
  591. project's actions are stored. An options file has the extension .IWO and has 
  592. the same name as a project file.