We have an old Windows 2000 Server that is going to be shut off soon.

Before we can do that, I need to get some applications from it to our new Windows 2008 R2 Server.

The project predates me, and there is no solution folder for it. Moreover, it is written in VB, which is not one of my strengths.

The old project has a WebControls Client folder with several files contained in it:


The subfolders only have images in them.

Upon opening one of these *.htc files in a text editor, it appears they are javascript files.

Here is a snippet of the treeview.htc file:

//  Copyright (c) 2000-2003 Microsoft Corporation.  All Rights Reserved.

<public:component tagname=treeview literalcontent=true>
        <public:attach event=oncontentready onevent="oncontentready()" />
        <public:attach event=ondocumentready onevent="ondocumentready()" />
        <public:attach event="onscroll" onevent="onScroll()" />
        <public:event name="onexpand" id="_tvevtExpand" />
        <public:event name="oncollapse" id="_tvevtCollapse" />
        <public:event name="onselectedindexchange" id="_tvevtSelect" />
        <public:event name="oncheck" id="_tvevtCheck" />
        <public:event name="onfirequeuedevents" id="_tvevtFireQueuedEvents" />
        <public:event name="onnodebound" id="_tvevtNodeBound" />
        <public:event name="onnodetypesbound" id="_tvevtNodeTypesBound" />
        <public:event name="onhover" id="_tvevtHover" />
        <public:event name="onunhover" id="_tvevtUnhover" />
        <public:property name="clickedNodeIndex" GET="getClickedNodeIndex" />
        <public:property name="defaultStyle" id="_tvpropDefaultStyle" GET="getDefaultStyle" PUT="setDefaultStyle" />
        <public:property name="hoverStyle" id="_tvpropHoverStyle" GET="getHoverStyle" PUT="setHoverStyle" />
        <public:property name="selectedStyle" id="_tvpropSelectedStyle" GET="getSelectedStyle" PUT="setSelectedStyle" />
        <public:property name="childType" id="_tvpropChildType" GET="getChildType" PUT="setChildType" />
        <public:property name="imageUrl" id="_tvpropImageUrl" GET="getImageUrl" PUT="setImageUrl" />
        <public:property name="expandedImageUrl" id="_tvpropExpandedImageUrl" GET="getExpandedImageUrl" PUT="setExpandedImageUrl" />
        <public:property name="selectedImageUrl" id="_tvpropSelectedImageUrl" GET="getSelectedImageUrl" PUT="setSelectedImageUrl" />
        <public:property name="target" id="_tvpropTarget" GET="getTarget" PUT="setTarget" />
        <public:property name="treeNodeSrc" id="_tvpropTreeNodeSrc" GET="getTreeNodeSrc" PUT="setTreeNodeSrc" />
        <public:property name="treeNodeXsltSrc" id="_tvpropTreeNodeXsltSrc" GET="getTreeNodeXsltSrc" PUT="setTreeNodeXsltSrc" />
        <public:property name="selectExpands" id="_tvpropSelectExpands" GET="getSelectExpands" PUT="setSelectExpands" />
        <public:property name="expandLevel" id="_tvpropExpandLevel" GET="getExpandLevel" PUT="setExpandLevel" />
        <public:property name="autoSelect" id="_tvpropAutoSelect" GET="getAutoSelect" PUT="setAutoSelect" />
        <public:property name="treeNodeTypeSrc" id="_tvpropTreeNodeTypeSrc" GET="getTreeNodeTypeSrc" PUT="setTreeNodeTypeSrc" />
        <public:property name="showLines" id="_tvpropShowLines" GET="getShowLines" PUT="setShowLines" />
        <public:property name="showPlus" id="_tvpropShowPlus" GET="getShowPlus" PUT="setShowPlus" />
        <public:property name="showToolTip" id="_tvpropShowToolTip" GET="getShowToolTip" PUT="setShowToolTip" />
        <public:property name="indent" id="_tvpropIndent" GET="getIndent" PUT="setIndent" />
        <public:property name="selectedNodeIndex" id="_tvpropSelectedNodeIndex" GET="getSelectedNodeIndex" PUT="setSelectedNodeIndex" />
        <public:property name="systemImagesPath" id="_tvpropSystemImagesPath" GET="getSystemImagesPath" PUT="setSystemImagesPath" />
        <public:method name="queueEvent" />
        <public:method name="getTreeNode" />
        <public:method name="addAt" />
        <public:method name="createTreeNode" />
        <public:method name="getTreeNodeType" />
        <public:method name="createTreeNodeType" />
        <public:method name="addTreeNodeType" />
        <public:method name="add" />
        <public:method name="databind" />
        <public:method name="databindTypes" />
        <public:method name="getChildren" />


<script language=javascript>

var contentNode;
var treeviewNode;
var g_typesNode;
var g_styles;
var g_event;
var g_timer = -1;
var g_nodeClicked = null;
var g_strQueuedEvents = "";
var g_bInteractive = false;
var g_numStop = 0;
var g_selectedNodeBeforeDelay = "";
var g_bFocus = false;
var g_bCreated = false;
var g_typeIsland = null;
var g_bNodesReady = false;
var g_bTypesReady = false;
var g_bMouseDown = false;
var g_pendingBinds = new Array(0);
var g_pendingSyncBinds = new Array(0);
var g_bindTimer = -1;
var g_bLock = false;
var g_bInTypesBoundEvent = false;
var L_strMSXMLError_Text = "Error creating MSXML object.  Please make sure the MSXML library is installed on your computer.";
var L_strRetrievingNodes_Text = "Retrieving nodes...";
var L_strXMLError_Text = "Error loading XML file %s";
var L_strInvalidXML_Text = "Invalid XML in %s";
var L_strXSLTError_Text = " or unsupported XSLT in %s";
var L_fontSize_Text = "10pt";
var L_fontName_Text = "Times";
var L_strToolTip_Text = "Use +/- to expand/collapse";

// properties
var prop_defaultStyle = null;
var prop_hoverStyle = null;
var prop_selectedStyle = null;
var prop_childType = null;
var prop_imageUrl = null;
var prop_expandedImageUrl = null;
var prop_selectedImageUrl = null;
var prop_target = null;
var prop_treeNodeSrc = null;
var prop_treeNodeXsltSrc = null;
var prop_selectExpands = null;
var prop_expandLevel = -1;
var prop_autoSelect = false;
var prop_treeNodeTypeSrc = null;
var prop_showLines = true;
var prop_showPlus = true;
var prop_showToolTip = true;
var prop_indent = 19;
var prop_selectedNodeIndex = null;
var prop_systemImagesPath = null;

// QueueEvent()
// Queue an event for later posting to the server, when the
// _tvevtFireQueuedEvents event fires.
function queueEvent(strEvent, strParams)
        if (g_strQueuedEvents.length > 0)
                g_strQueuedEvents += ";";
        g_strQueuedEvents += (strEvent + "," + strParams);

function getQueuedEvents()
        return g_strQueuedEvents;

function fireQueuedEvents()
        if (g_strQueuedEvents != "")
                if (getAttribute("onfirequeuedevents") != null)
                        if (g_timer != -1)
                                // force pending autoSelect to trigger
                                g_bInteractive = false;
                                g_numStop = 0;

None of these filenames, however, resemble the controls I am missing:

  • Prism.Logging.CompositeLogger
  • TimeSheetIO.LocationTreeNode
  • TimeSheetIO.LocationTreeNodeList
  • TimeSheetIO.ReasonTypeValidFor.Callout
  • UIHelpers.ToWebListItemArray

A search of these terms appears to reveal that they are a part of the Internet Explorer WebControls. The link to the download on that page, however, appears to no longer exist.

Does anyone have any good suggestions on how to get a running application from an old server to a newer server when the code isn't all there?

Is there something that replaced WebControls? I can only guess Microsoft discontinued it because of an issue.

I have put off asking this question for a long time because I keep thinking the solution must be out here on the Internet somewhere, but I just can't seem to find it.

Related posts

Recent Viewed