The above menu bar and the one at the bottom of the page are both dynamically generated using a short html++ program. No pages need recoding as menu options are added or changed.



Magazine Ads

html++ CGI Class Library
Frequently Asked Questions



What is html++?
    html++ is a library of C++ classes that allow developers to create dynamic web pages using C++ objects instead of printf statements or scripting languages.
Why would one use html++ instead of scripting languages like Perl?
  • Speed. Since html++ is straight C++, it's very FAST.
  • Low overhead. html++ applications are typically less than 100k in size. As such, they load and execute faster than Perl, which can require as much as 1MB or more for its interpreter. If html++ is used in a server extension, such as with ISAPI, it runs in the same address space as the web server and does not incur any overhead of loading/unloading from memory.
  • Security. html++ applications are true compiled executables. You don't have to worry about anyone gaining access to your source code when distributing applications.
  • Browser independence. Since html++ emits standard HTML code, html++ web sites can achieve dynamic behavior without using browser-specific tags or non-standard features.
  • Automatic syntax checking. Let html++ emit the HTML code for your application, guaranteeing that all start/end tags are properly placed and attributes are properly used.
  • Cross-platform solution. html++ applications run without modification on a variety of operating systems and web servers.
  • Become productive immediately. Use your existing C/C++ skills and development tools without any steep learning curves.
Is html++ scalable for high-traffic servers?
    Absolutely. html++ dynamic web pages can accomodate many more hits than Perl or other scripting languages, without degrading server performance.
How much overhead does the html++ library add to a C/C++ application?
    Overhead varies from platform to platform. On Windows NT, the html++ DLL is approximately 375K. Applications usually compile to 100K or less. In general, html++ will add about 40K-80K of code to most applications.
What browsers are compatible with html++ output?
    html++ emits standard HTML code, compatible with virtually all web browsers, including Netscape Navigator and Microsoft Internet Explorer. Since standard HTML code is produced, html++ web sites can achieve dynamic behavior without using browser-specific tags or non-standard features.
How many classes are included in the Library?
    There are currently over 80 classes in the Library, though you only need to familiarize yourself with a handful to use the product. Developers experienced with HTML tags will find the class hierarchy logically designed, and the naming conventions familiar.
How are new HTML tags supported?
    We're constantly adding features to the Library, and will continue to develop new classes as the HTML standard evolves. Users can define their own classes to support new HTML tags by subclassing any similar class and populating a few member methods.
Is source code available?
    Yes. Complete C++ source code to everything is available separately for a nominal fee.
What is required to use html++?
    Any C++ compiler (MS Visual C++, GNU, etc.) and nearly any web server. html++ supports both Common Gateway Interface (CGI) and ISAPI web servers, including Apache, Netscape, O'Reilly, and Microsoft IIS. Versions of html++ are available for Windows, Macintosh, OS/2, and many versions of Unix.
Why is html++ better than the shareware CGI libraries I've seen on the 'net?
    html++ is far more robust and contains many more features than any comparable shareware product. In addition, html++ was designed from inception to provide a cross-platform solution. Most shareware libraries are intended only for a particular web server or operating system. html++ includes complete online help, and is accompanied by a 450-page, 2-manual documentation. The product includes 60 days of support, which can be extended with our Annual Maintenance Program for just $95 per year.
Can html++ be used in MFC applications?
    Yes. html++ is platform independent and does not require any MFC classes.
Are any additional libraries, such as the Standard Template Libary, required?
    No. html++ includes everything it needs internally to remain platform independent.
What documentation is included with the product?
    The product comes with a 450-page, 2-manual set of documentation, which is also supplied as online help files. Approximately 150 pages are devoted to an extensive tutorial section, and numerous examples are included (one for nearly every class). The complete online documentation is included in the demo.
Can html++ handle multipart mime encoded form data?
    Yes. html++ allows your applications to accept HTTP file uploads using a single object.
What are "Persistent Cookies?"
    "Cookies" is a term that refers to the capability of web servers to store a piece of information in a web browser for later retrieval. Cookies are used to achieve persistence between pages and sessions for a particular visiting browser. Handling cookies in an application is one of the more difficult aspects of dynamic web pages, and html++ makes it a breeze via the htmlServer, htmlCgi, and htmlISAPI classes. Adding cookie support to your application is as simple as setting and getting a member method.
Can html++ be used to maintain state information between pages?
    Yes, this is a major strength of the html++ Library. html++ offers several ways to mantain state between pages, including the htmlCookie and htmlSession classes, as well as with hidden fields and URL-encoded data. Hidden fields and URL-encoded data can be automatically encrypted using one of several included or user-defined algorithms.
What types of encryption are included?
    The Coder abstract base class defines a common interface for general-purpose encryption and encoding of data. Coder-derived classes are used in conjunction with the htmlServer class to perform automatic encryption and decryption of name/value pairs. Developers can implement custom algorithms by subclassing the Coder base class. Four Coder-derived classes are provided:

  • NullCoder Simple pass-through with no modification.
  • XorCoder Performs basic encryption using simple XOR algorithm.
  • ScrambleCoder Performs sophisticated (32-bit) password-based encryption with error checking.
  • UrlCoder Translates spaces and non-alphanumeric characters so that they're suitable for inclusion as part of a URL.
Can html++ be used to generate just a portion of a document instead of an entire page?
    Yes. All you need to do is include the executable output in your HTML page using a #exec or similar server-side include statement. Complete examples are included in the User's Guide for Apache, Netscape, O'Reilly, and Microsoft IIS web servers.
Can existing HTML files be used with html++?
    Certainly. Examples are included for inserting HTML snippets from files into objects, as well as for using HTML documents as templates for dynamic substitution of variables and other objects.
Can html++ objects contain other nested objects?
    Yes. It's easy to create complex pages using just a few lines of code, and you'll never have to worry about matching <start></end> tags again. Any htmlGroup-derived object can contain any object that inherits from htmlObject. Pages can contain text, images, hyperlinks, tables, etc. Tables can contain other tables, etc. A good example of this feature is nested tables, where a table cell contains another complete table. For details and source code, refer to the example for "Tutorial: Tables: Nested Tables" in the User's Guide.
How are html++ objects combined to produce a dynamic page?
    Objects are added to one another using the << insertion operator or the htmlGroup::Add() method. The following example illustrates a traditional "hello world" application that communicates directly with a web browser:

    #include <stdio.h>
    #include <stdlib.h>
    #include <dcmicro/htmlpp/htmlpp.h>
    
    int main( void )
    {
       htmlCgi   server ;
       htmlPage  page( "html++ example application" ) ;
    
       page.BackgroundColor( COLOR_WHITE ) ;
       page << "Hello world" ;
    
       server << page ;
       return 0 ;
    }
    
What about technical support and upgrades?
    The product includes 60 days of technical support and upgrades. Users participating in our Annual Maintenance Program ($95 per year) receive unlimited toll-free technical support and upgrades for a full year.

    Technical support is available via email (support@dcmicro.com), telephone, and fax.

Is database support built in?
    No, though developers are free to use whatever additional development libraries they choose. We do offer examples of integrating dynamic content from several databases, including SQL Server, mySQL, and CodeBase.
Can html++ be used in conjunction with Cold Fusion?
    Yes. html++ applications can be used with Cold Fusion, or any other scripting language (including Perl) that supports server-side includes or web server extensions.
What about Year 2000?
    html++ is Y2K ready. Actually, the only html++ classes even concerned with dates are htmlCookie and Julian, which can represent dates thousands of years into the future.





©Copyright 1995-2007 DC Micro Development, Inc., All rights reserved.
Crusher, html++, NetKit and TopDog are trademarks of DC Micro Development, Inc.
1890 Star Shoot Pkwy, Suite 170-309
Lexington, KY 40509
Phone: 859-317-2352