Click here to Skip to main content
15,896,063 members
Articles / Desktop Programming / MFC

UMLEditor - revisiting the vector editor

Rate me:
Please Sign up or sign in to vote.
4.99/5 (156 votes)
5 Jul 2006Public Domain8 min read 378K   37.1K   326  
An UML editor with code-generation capabilities derived from CDiagramEditor.
<html>
<head>
<style>
body{font-size: 10pt;color: black;font-family: Verdana, Helvetica, Arial, sans-serif;background-color: #ffffff}
p{font-size: 10pt;color: black;font-family: Verdana, Helvetica, Arial, sans-serif;}
h2{font-size: 13pt;color: #ff9900;font-family: Verdana, Helvetica, Arial, sans-serif;font-weight: bold;}
h3{color: #ff9900;font-weight: bold;font-size: 11pt;font-family: Arial, sans-serif;}
table{background-color:#f0f0ff;}
td{font-size: 10pt;color: black;font-family: Verdana, Helvetica, Arial, sans-serif;padding:4px;}
pre{padding-right: 7pt;padding-left: 7pt;padding-bottom: 7pt;font: 9pt 'Courier New', Courier, mono;width: 100%;padding-top: 7pt;white-space: pre;background-color: #fbedbb}
code{color: #990000;font-family: 'Courier New', Courier, mono;}
A:link{text-decoration: none}
A:visited{text-decoration: none}
A:active{text-decoration: underline}
A:hover{text-decoration: underline}
A.top:link{font-size:8pt;color:red;font-family:Verdana,Helvetica,Arial,sans-serif;}
A.top:visited{font-size:8pt;color:red;font-family:Verdana,Helvetica,Arial,sans-serif;}
A.top:active{font-size:8pt;color:red;font-family:Verdana,Helvetica,Arial,sans-serif;}
A.top:hoover{font-size:8pt;color:red;font-family:Verdana,Helvetica,Arial,sans-serif;}
</style>
</head>
<body>
<h2>The UMLEditor</h2>
<h3>Overview</h3>
<p>The UMLEditor is a UML editor for static diagrams (class diagrams) that you can plug into your own application. It has functionality to draw and edit class diagrams, export them to c++-code, HTML and EMFs. It support classes, packages, interfaces and notes as well as transparent labels.</p>
<p><img border=0 src="images/Main screen.gif"></img></p>
<p>The editor is based on <code>CDiagramEditor</code>, and more information on the underlying framework can be found in the documentation for that package.</p>

<p>The editor has the following features:</p>
<ul>
<li>Allows creation and editing of static diagrams.</li>
<li>Supports class-, interface-, note-, label- and package objects.</li>
<li>Easy to incorporate in SDI-, MDI or dialog apps.</li>
<li>Extensive editing support: undo, zoom, internal copy and paste. Objects can be grouped, and handled as such.</li>
<li>Support for the MFC print-preview and printing mechanism.</li>
<li>Allows export to EMF, HTML and c++.</li>
<li>Allows import to individual class objects from h-files.</li>
</ul>
<p>and much more.</p>

<h3>Detailed descriptions</h3>
<a href="Include the editor.html">How to include the UML-editor in an application</a><br>
<a href="Drawing diagrams.html">Using the UML-editor</a><br>
<a href="HTML generation.html">HTML Export</a><br>
<a href="Code generation.html">C++ code generation with the UML editor</a><br>
<a href="UMLEntityClass diagram.html">A diagram of the UMLENtityClass class</a><br>

<h3>Basic overview</h3>
<div style='position:relative;height:400;'>
<div style='position:absolute;left:408;top:232;width:1;height:32;border-left:1px solid black;'>&nbsp;</div><div style='position:absolute;left:404;top:247;width:9;height:17;background-image:url("images/dfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div>
<div style='position:absolute;left:288;top:184;width:48;height:1;border-top:1px dashed black;'>&nbsp;</div><div style='position:absolute;left:319;top:180;width:17;height:9;background-image:url("images/rfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div>
<div style='position:absolute;left:216;top:216;width:1;height:40;border-left:1px solid black;'>&nbsp;</div><div style='position:absolute;left:212;top:239;width:9;height:17;background-image:url("images/dfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div><div style='position:absolute;left:212;top:216;width:9;height:16;background-image:url("images/uddiamond.gif");background-repeat:no-repeat;'>&nbsp;</div><div style='position:absolute;left:203;top:242;width:9;height:14;font-family:Arial;font-size:12;background-color:transparent;text-align:right;'>*</div>
<div style='position:absolute;left:312;top:296;width:32;height:1;border-top:1px solid black;'>&nbsp;</div><div style='position:absolute;left:327;top:292;width:17;height:9;background-image:url("images/rfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div><div style='position:absolute;left:316;top:278;width:24;height:14;font-family:Arial;font-size:12;background-color:transparent;text-align:left;'>*</div>
<div style='position:absolute;left:312;top:240;width:1;height:56;border-left:1px solid black;'>&nbsp;</div>
<div style='position:absolute;left:248;top:240;width:64;height:1;border-top:1px solid black;'>&nbsp;</div>
<div style='position:absolute;left:248;top:216;width:1;height:24;border-left:1px solid black;'>&nbsp;</div><div style='position:absolute;left:244;top:216;width:9;height:16;background-image:url("images/uddiamond.gif");background-repeat:no-repeat;'>&nbsp;</div>
<div style='position:absolute;left:264;top:112;width:72;height:1;border-top:1px solid black;'>&nbsp;</div><div style='position:absolute;left:319;top:108;width:17;height:9;background-image:url("images/rfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div>
<div style='position:absolute;left:264;top:112;width:1;height:40;border-left:1px solid black;'>&nbsp;</div><div style='position:absolute;left:260;top:136;width:9;height:16;background-image:url("images/uddiamond.gif");background-repeat:no-repeat;'>&nbsp;</div><div style='position:absolute;left:251;top:138;width:9;height:14;font-family:Arial;font-size:12;background-color:transparent;text-align:right;'>*</div>
<div style='position:absolute;left:288;top:40;width:56;height:1;border-top:1px solid black;'>&nbsp;</div><div style='position:absolute;left:327;top:36;width:17;height:9;background-image:url("images/rfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div><div style='position:absolute;left:288;top:36;width:16;height:9;background-image:url("images/lrdiamond.gif");background-repeat:no-repeat;'>&nbsp;</div>
<div style='position:absolute;left:216;top:88;width:1;height:64;border-left:1px solid black;'>&nbsp;</div><div style='position:absolute;left:212;top:135;width:9;height:17;background-image:url("images/dfarrow.gif");background-repeat:no-repeat;'>&nbsp;</div><div style='position:absolute;left:212;top:88;width:9;height:16;background-image:url("images/uddiamond.gif");background-repeat:no-repeat;'>&nbsp;</div>
<div style='position:absolute;left:136;top:48;width:16;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;left:136;top:184;width:16;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;left:136;top:288;width:16;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;left:472;top:40;width:40;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;left:488;top:112;width:24;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;left:472;top:184;width:40;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;left:496;top:312;width:16;height:1;border-top:1px dashed black;'>&nbsp;</div>
<div style='position:absolute;overflow:hidden;left:152;top:8;width:136;height:36;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'><b>CUMLEditor</b><br>{ baseclass = CWnd }</div><div style='position:absolute;overflow:hidden;left:152;top:43;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div><div style='position:absolute;overflow:hidden;left:152;top:64;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;overflow:hidden;left:336;top:80;width:152;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'><b>CUMLClipboardHandler</b></div><div style='position:absolute;overflow:hidden;left:336;top:101;width:152;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'></div><div style='position:absolute;overflow:hidden;left:336;top:122;width:152;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;overflow:hidden;left:152;top:152;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'><b>CUMLEntityContainer</b></div><div style='position:absolute;overflow:hidden;left:152;top:173;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div><div style='position:absolute;overflow:hidden;left:152;top:194;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;overflow:hidden;left:336;top:152;width:136;height:36;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'>� utility �<br><b>CUMLControlFactory</b></div><div style='position:absolute;overflow:hidden;left:336;top:187;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'></div><div style='position:absolute;overflow:hidden;left:336;top:208;width:136;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;overflow:hidden;left:344;top:264;width:152;height:36;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'><b>CUMLEntity</b><br>{ baseclass = CObject }</div><div style='position:absolute;overflow:hidden;left:344;top:299;width:152;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div><div style='position:absolute;overflow:hidden;left:344;top:320;width:152;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;overflow:hidden;left:344;top:8;width:128;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'><b>CUMLMenu</b></div><div style='position:absolute;overflow:hidden;left:344;top:29;width:128;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'></div><div style='position:absolute;overflow:hidden;left:344;top:50;width:128;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;overflow:hidden;left:152;top:256;width:128;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:center;'><b>CUMLUndoItem</b></div><div style='position:absolute;overflow:hidden;left:152;top:277;width:128;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div><div style='position:absolute;overflow:hidden;left:152;top:298;width:128;height:22;border:1px solid black;background-color:#ffffd9;font-size:12;font-family:Arial;text-align:left;'>...</div>
<div style='position:absolute;left:16;top:16;width:120;height:64;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:110;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:118;height:53;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>The editor window.<br>Manages editing</div></div>
<div style='position:absolute;left:16;top:144;width:120;height:72;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:110;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:118;height:61;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>Data container<br>Holds a list of CUMLEntity-derived objects </div></div>
<div style='position:absolute;left:16;top:256;width:120;height:120;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:110;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:118;height:109;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>Represents a single state of the program. <br>An array of those states is the undo-functionality of the application.</div></div>
<div style='position:absolute;left:512;top:264;width:168;height:88;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:158;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:166;height:77;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>The basic drawing objects of the editor.<br>Separate derived classes represents class-, package-, line segment- etc object.</div></div>
<div style='position:absolute;left:512;top:152;width:168;height:64;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:158;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:166;height:53;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>Factory class that contstructs new CUMLEntity-objects when loading from file.</div></div>
<div style='position:absolute;left:512;top:80;width:192;height:64;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:182;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:190;height:53;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>Handles the clipboard.<br>Several CUMLEntityContainers can share the same clipboard.</div></div>
<div style='position:absolute;left:512;top:8;width:96;height:64;border:1px solid black;background-color:#dfffdf;'><div style='position:absolute;left:86;top:-1;width:9:height:9;background-image:url("images/note.gif");background-repeat:no-repeat;'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='position:absolute;left:1;top:10;width:94;height:53;font-size:12;font-family:Arial;text-align:left;overflow:hidden;'>Editor popup menu</div></div>
<div style='position:absolute;left:160;top:360;width:224;height:32;font-family:Arial;font-size:12;overflow:hidden;font-weight:bold;font-style:normal;text-decoration:none;'>Basic structure of the UML-editor</div>
</div>
<p>The diagram is created by the UMLEditor, of course</p>
<h2>Classes</h2>
<!-- start-class-list -->
<p><a href='AddParameterDialog.html'>CAddParameterDialog</a> - Dialog box class to edit or create a single parameter</p>
<p><a href='Attribute.html'>CAttribute</a> - The <code>CAttribute</code> class - derived from <code>CObject</code> - represents a single attribute in an UML-class. The attributes are stored in a <code>CObArray</code> in the <code>CAttributeContainer</code> class.</p>
<p><a href='AttributeContainer.html'>CAttributeContainer</a> - Holds an array of attributes for an instance of <code>CUMLEntityClass</code>.</p>
<p><a href='ClassAttributePropertyDialog.html'>CClassAttributePropertyDialog</a> - <code>CClassAttributePropertyDialog</code>, derived from <code>CDialog</code>, encapsulates the attribute property dialog.</p>
<p><a href='ClassDisplayPropertyDialog.html'>CClassDisplayPropertyDialog</a> - <code>CClassDisplayPropertyDialog</code> derives from <code>CDialog</code> and is a wrapper for the class display properties dialog.</p>
<p><a href='ClassOperationPropertyDialog.html'>CClassOperationPropertyDialog</a> - <code>CClassOperationPropertyDialog</code>, derived from <code>CDialog</code>, encapsulates the operation property dialog.</p>
<p><a href='ExListBox.html'>CExListBox</a> - <code>CExListBox</code>, derived from <code>CListbox</code>, adds dragging to a listbox. It also sends registered messages to the owner when DEL is pressed, when a line is double clicked and when the selection is changed (the last two as the dragging kills the normal notification mechanism). The class also sets the tab-position to half the horizontal width, and automatically sets the listbox scrollbar width when adding a string.</p>
<p><a href='GetterSetterDialog.html'>CGetterSetterdialog</a> - <code>CGetterSetterdialog</code> is derived from <code>CDialog</code> and wraps the getter/setter-name dialog.</p>
<p><a href='Operation.html'>COperation</a> - <code>COperation</code>, derived from <code>CObject</code>, represents a single operation for a <code>CUMLEntityClass</code> object.</p>
<p><a href='OperationContainer.html'>COperationContainer</a> - A container for <code>COperation</code>s</p>
<p><a href='Parameter.html'>CParameter</a> - <code>CParameter</code>, derived from <code>CObject</code>, represents a single parameter for an operation.</p>
<p><a href='ParameterContainer.html'>CParameterContainer</a> - A container for <code>CParameter</code>s</p>
<p><a href='Property.html'>CProperty</a> - <code>CProperty</code>, derived from <code>CObject</code>, represents a single property.</p>
<p><a href='PropertyContainer.html'>CPropertyContainer</a> - <code>CPropertyContainer</code> is a container for property objects.</p>
<p><a href='PropertyListEditorDialog.html'>CPropertyListEditorDialog</a> - <code>CPropertyListEditorDialog</code> derives from <code>CDialog</code> and is a wrapper for the property list editor dialog.</p>
<p><a href='UMLClassPropertyDialog.html'>CUMLClassPropertyDialog</a> - <code>CUMLClassPropertyDialog</code> derives from <code>CDiagramPropertyDlg</code>, used by <code>CUMLEntity</code>-derived objects to edit the object attributes.</p>
<p><a href='UMLClipboardHandler.html'>CUMLClipboardHandler</a> - <code>CUMLClipboardHandler</code> is a clipboard handler that includes links in the clipboard.</p>
<p><a href='UMLControlFactory.html'>CUMLControlFactory</a> - <code>CUMLControlFactory</code> is a factory-class with one single member, allowing the creation of <code>CDiagramEntity</code>- derived objects from a string.</p>
<p><a href='UMLEditor.html'>CUMLEditor</a> - <code>CUMLEditor</code> is the main editor class of the UML-editor, derived from <code>CDiagramEditor</code>.</p>
<p><a href='UMLEditorPropertyDialog.html'>CUMLEditorPropertyDialog</a> - <code>CUMLEditorPropertyDialog</code> derives from <code>CDialog</code> and is a wrapper around the editor property dialog.</p>
<p><a href='UMLEntity.html'>CUMLEntity</a> - <code>CUMLEntity</code> is a base class for linked objects used by a <code>CDiagramEditor</code>.</p>
<p><a href='UMLEntityClass.html'>CUMLEntityClass</a> - <code>CUMLEntityClass</code>, derived from <code>CUMLEntity</code>, represents an UML class box.</p>
<p><a href='UMLEntityClassTemplate.html'>CUMLEntityClassTemplate</a> - <code>CUMLEntityClassTemplate</code> is a specialization of <code>CUMLEntityClass</code> and represents a template class.</p>
<p><a href='UMLEntityContainer.html'>CUMLEntityContainer</a> - <code>CUMLEntityContainer</code> is a <code>CDiagramEntityContainer</code>- derived class, holding the data for a <code>CUMLEditor</code>. In addition to <code>CDiagramEntityContainer</code>, this class keeps and manages links. This includes copy/paste and undo-handling.</p>
<p><a href='UMLEntityDummy.html'>CUMLEntityDummy</a> - <code>CUMLEntityDummy</code> is derived from <code>CUMLEntity</code>.</p>
<p><a href='UMLEntityInterface.html'>CUMLEntityInterface</a> - <code>CUMLEntityInterface</code> is derived from <code>CUMLEntity</code> and represents an UML interface object.</p>
<p><a href='UMLEntityLabel.html'>CUMLEntityLabel</a> - <code>CUMLEntityLabel</code> is derived from <code>CUMLEntity</code> and represents an UML label.</p>
<p><a href='UMLEntityNote.html'>CUMLEntityNote</a> - <code>CUMLEntityNote</code> is derived from <code>CUMLEntity</code> and represents an UML note object.</p>
<p><a href='UMLEntityPackage.html'>CUMLEntityPackage</a> - <code>CUMLEntityPackage</code> is derived from <code>CUMLEntity</code> and represents an UML package object.</p>
<p><a href='UMLInterfacePropertyDialog.html'>CUMLInterfacePropertyDialog</a> - <code>CUMLInterfacePropertyDialog</code> is a dialog box wrapper derived from <code>CDiagramPropertyDlg</code>, used by <code>CUMLEntity</code>-derived objects to edit the object title attribute.</p>
<p><a href='UMLLabelPropertyDialog.html'>CUMLLabelPropertyDialog</a> - <code>CUMLLabelPropertyDialog</code> is a dialog box wrapper derived from <code>CDiagramPropertyDlg</code>, used by <code>CUMLEntity</code>- derived objects to edit the object title attribute.</p>
<p><a href='UMLLineSegment.html'>CUMLLineSegment</a> - <code>CUMLLineSegment</code> is a <code>CUMLEntity</code>- derived class, representing a line that can be linked to other <code>CUMLEntity</code>-derived objects.</p>
<p><a href='UMLLinkPropertyDialog.html'>CUMLLinkPropertyDialog</a> - <code>CUMLLinkPropertyDialog</code> derives from <code>CDiagramPropertyDlg</code>. It is a wrapper for the link property dialog.</p>
<p><a href='UMLMenu.html'>CUMLMenu</a> - <code>CUMLMenu</code> is a <code>CDiagramMenu</code>-derived class, and allows a specialized popup-menu (loaded from the application resources) to be displayed when the editor is right-clicked.</p>
<p><a href='UMLNotePropertyDialog.html'>CUMLNotePropertyDialog</a> - <code>CUMLNotePropertyDialog</code> is a dialog box wrapper derived from <code>CDiagramPropertyDlg</code>, used by <code>CUMLEntity</code>- derived objects to edit the object title attribute.</p>
<p><a href='UMLPackagePropertyDialog.html'>CUMLPackagePropertyDialog</a> - <code>CUMLPackagePropertyDialog</code> is a dialog box wrapper derived from <code>CDiagramPropertyDlg</code>, used by <code>CUMLEntity</code>-derived objects to edit the object title attribute.</p>
<p><a href='UMLTemplatePropertyDialog.html'>CUMLTemplatePropertyDialog</a> - <code>CUMLTemplatePropertyDialog</code> derives from <code>CDiagramPropertyDlg</code> and is a wrapper for the template property dialog.</p>
<p><a href='UMLUndoItem.html'>CUMLUndoItem</a> - <code>CUMLUndoItem</code>, derived from <code>CUndoItem</code>, is a single application state for use with the <code>CDiagramEditor</code>-undo mechanism.</p>
<!-- end-class-list -->
<h2>Other classes</h2>
<p><a href="DiagramEditor/index.html">DiagramEditor</a> - Documentation for the base class package.</p>
<p><a href='DiskObject.html'>CDiskObject</a> - <code>CDiskObject</code> encapsulates several high-level file- and directory operations.</p>
<p><a href='TextFile.html'>CTextFile</a> - The class is a helper-package for text files and windows. It allows loading and saving text files in a single operation, as well as getting text to and from edit- and listboxes. If an empty filename is given as a parameter to a call, the standard file dialog will be displayed, to let the user select a file. Error handling is managed internally, and the different API-functions return a <code>BOOL</code> to signal success or failure. In case of failure, <code>FALSE</code> returned, the member function <code>GetErrorMessage</code> can be called to retrieve a <code>CString</code> with the error message. If this string is empty, the file selection was aborted in the case of an empty input name.</p>
<p><a href='Tokenizer.html'>CTokenizer</a> - <code>CTokenizer</code> is a very simple class to tokenize a string into a string array.</p>
<b><small>Copyright 2004 Johan Rosengren Abstrakt Mekanik AB</small></b>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under A Public Domain dedication


Written By
Software Developer (Senior) Abstrakt Mekanik AB
Sweden Sweden
45 years old, married, three kids.

Started with computers more than 20 years ago on a CBM-64.

Read Theoretical Philosophy at the University of Lund.

Working as a C++ consultant developer.

Science-fiction freak. Enjoy vintage punkrock.

Comments and Discussions