VXPLib Technology Highlights


VXPLib is a DLL COM Server made up by 10 COM interfaces to assemble all existing key elements of designing user interfaces into one library usable on all existing development platforms for all versions of MS-Windows. It also provides a few most commonly used technology derivations such as Menus, Tooltips, Custom Controls and generic drawing routines to simplify design of complex Windows applications. Given below are source and destination technologies with VXPLib as the Middle-Layer solution. VXPLib Technologies
Source Technologies
HTML
Hyper Text Mark-up Language gave foundation to the Quick HTML Parser implemented by interface IVXPQuickHTML - the very core interface of the VXPLib component. Most of the text-formatting tags are supported, including table formatting. The parser extends the standard HTML syntax with Virtual Controls, Virtual Documents and XML-like Custom Attributes to provide a powerful way of integrating QHTML into UI and programming architecture in general.

XML
Our parser supports custom attributes to allow definition of and access to objects with dynamic number of parameters. This adheres to using XML-schemas and enables the parser to be used as extension of the Object-Oriented approach on all platforms, plus as universal data-exchange mechanism (read details below) and in a way means of automation of user interfaces.

Speech
Any existing speech platform can be used via VXPLib using Speech Tags and Comments Tags supported by the QHTML Parser specially for this. The parser supports different formats of Text-To-Speech formatting, including XML-type of formatting. As an example of using this feature, interface IVXPTooltip supports a mechanism of synchronizing sound/speech effects with visual aspects of the tooltip window such as being Shown, Showing, Hiding and Hidden.

Graphics
Graphical engine of MS-Windows is built on using Device Contexts. The QHTML Parser is targeted to simplify graphics rendering of QHTML via simple operations with Device Context. This allows the parser to easily display QHTML on any object that provides its Device Context handle.
Resulting Solutions
Advanced UI
QHTML Parser is an HTML-rendering engine that works with Device Context, thus allows drawing on any visual as well as non-visual elements that have its own Device Context. As an example, VXPLib itself implements various derivations of the QHTML Parser, such as Tooltips, Menus and Skins support. With QHTML it is very easy to derive an existing visual object to draw it using the parser drawing routines, which significantly improves appearance of the user interface.

User Interface Skins
QHTML Parser implements Virtual Controls to allow integration of any Windows Controls right into QHTML documents. The parser is able to distinguish static (with known dimensions) and dynamic (with unknown dimensions) controls. QHTML automates the process of allocation and initialization (via XML Custom Attributes) for all kinds of objects. This provides a dynamic way of changing user interfaces by using QHTML Documents as User Interface Schemas.

Tooltips
VXPLib implements two levels of working with tooltips:
  1. Interface IVXPTooltip. This interface creates and manipulates a tooltip window with a long set of parameters, methods and supported events to represent a tooltip primitive. It uses QHTML Parser for drawing contents of the tooltips window. Various visual effects and tooltip shapes/behavior are supported.
  2. Interface IVXPTooltipManager - uses IVXPTooltip for higher level of working with tooltips by automating attachments of tooltips to all kinds of objects: Command-objects (Windows Controls, Menu Items, Toolbar buttons) and Window-handle objects (Window controls and all other types of windows). This interface also integrates such means as:
    • Debug-aided tooltips
    • Custom tooltips
    • Overall tooltip management for the application
    • Other tooltip management settings

Menus
VXPLib implements interface IVXPMenuHook to provide generic for Windows approach to drawing custom menus in a standard way. This interface was implemented assuming that whoever uses it will also use QHTML Parser for drawing menu items, as the most powerful tool for that. There has never been an easier way of drawing menu items than by using QHTML. In many cases, like drawing multi-line menus similar to Start menu in Windows XP it is impossible to do without a reliable and fast graphical parser like QHTML. There are many advanced features offered by the IVXPMenuHook interface beside custom-drawn menu items, such as: Due to its COM nature IVXPMenuHook enforces a standard implementation for custom-drawn menus on all development platforms based on MS-Windows event system for menus.

OOP
With QHTML it becomes easy to work with complex objects that require to be initialized with many parameters. XML Custom Attributes of QHTML allow designing new types of objects that will only be taking QHTML documents for object initialization. Using tags with custom attributes such new objects will be able to extract values for all parameters needed by the object to initialize itself. This opens a new way to the Object Oriented Paradigm making overload of derivations unnecessary, while providing for open-source initialization, thus simplifying project debugging and post-release maintenance.
Example 1:
If you wanted to create a new base class or derive it from an existing one in order to extend/override it with a set of new parameters you would naturally ask yourself what constructors are to be provided for such class to make the most common use of it as easy as possible. At some stage you or another developer who uses the new class will try to simplify his way of using the class to avoid the overburden of very long object initialization with too many parameters. This can be done in one of the following two ways:
  • If the developer is lazy it is most likely he just will modify a constructor of the class to set all parameters by default to the values he needs - very bad practice
  • A developer with good manners will create a new class to derive the old one and initialize all parameters to the values he needs - results in too many classes with near-to-no-value code and complicates the project architecture.
With QHTML this can be avoided completely. Instead, the base class could be designed with just one constructor to take a reference to a QHTML document where values of custom attributes could be processed by the class as initialization parameters. All that our developer does - describes a list of parameter names supported by the object, just like in any object library. With this approach there will be no need to create a new derived class or modify the existing one, plus it makes initialization principles standard, open-source, and hence easy to read and maintain.

Example 2:
Imagine you have to work with a list (collection, dictionary or map) of objects. We assume the list can be of known or unknown (dynamic) length. Naturally, each object is to be created and then initialized with parameters before being placed in the list. Considering that in many situations we have to deal with a list of always the same standard-type parameters it could be a very handy solution just to place the whole list of initialization parameters for all objects in just one human-readable document, such as HTML. By using QHTML you can create your Collection Object not to have any initialization constructors. Instead, your CObjectList class will take a reference to a QHTML Document that contains a list of all initialization parameters for all objects so that CObjectList can just take that document, generate a list of all objects and initialize them with values of custom attributes taken from the document. This is very similar as if you had an XML-database with initialization data for your list of objects, except with QHTML this is done much easier and more efficiently, as it is optimized for Windows stand-alone applications.

Copyright© 2003 Tooltips.NET