Skip to main content

Visual Toolchest

All Visual Toolchest functions are defined in the PPJ.Runtime.Vis class as static methods. The names are all unchanged, with the Vis prefix being the name of the class: VisStrPad() is Vis.StrPad(). Also all the supported Visual Toolchest controls are declared in PPJ.Runtime.Vis. The names of the controls have been normalized to Vis<Name>. Ice Porter changes the names automatically while porting: cColorCombBox is ported to VisColorComboBox.

All Visual Toolchest controls are directly derived from either PPJ controls (which are directly derived from .NET controls) or from .NET controls. Extended controls like the calendar or the outline control in the Visual Toolchest library are implemented extending the equivalent .NET controls, which are implemented in .NET as wrapper to the common controls library.

Unsupported functions

The desktop compatibility library implements the public Visual Toolchest API covered by its reference; verify any release-specific or platform-specific members.

However some SAL code may use undocumented functions that were not intended to be used directly and are not supported in the PPJ Framework.

Unsupported controls

The following table describes desktop control mappings. Web implementations can use different base controls.

However some extended controls may behave a bit differently or may have some limitations because we use the standard .NET implementation of common controls. The following table shows the equivalence between custom VT controls and Windows common controls:

Visual Toolchest controlEquivalent .NET control (from Windows Common Controls)
cRichEditRichTextBox
cOutlineListBoxTreeView
cDesktopListBoxTreeView
cDirListBoxTreeView
cDirTreeListBoxTreeView
cListViewListView
cCalendarMonthCalendar
cCalendarDropDownDateTimePicker

Unsupported styles

Some Visual Toolchest controls support a number of style constants that alter the behavior of the control. Most of the styles have a direct correspondence to Windows Common Controls styles and are supported in the PPJ Framework. The table below lists the style correspondence.

ControlSupported VT stylesEquivalent property
TreeView

LBS_KillFocusNoSelect

LBS_ShowHorzScrollBar

LBS_ShowNoTree

LBS_ShowSelectText

LBS_Explorer

LBS_DisableNoScroll

HideSelection

HorizontalScrollbar (only for VisOutlineListBox)

ShowLines

FullRowSelect

ShowPlusMinus

Scrollable

ComboBoxNoneNone
ListBoxLBS_NoAutoResizeIntegralHeight
tip

The original SAL application may try to apply VT style LBS_VisExtensions to controls that are not derived from VT classes. This is not supported in the PPJ Framework because it's an internal feature of the VT library used to subclass the control. When reading the styles of a VT derived class, the LBS_VisExtensions value is automatically added by the PPJ Framework to the return value.

Migration Checks

Test tree selection, rich text, date input, and menu ownership with representative data. Matching function names do not establish identical native styles, event order, or rendering. Resolve undocumented VT calls explicitly rather than relying on implementation details of the old DLL.