Developers who have worked with our MFC based ActiveX component will notice one major conceptual difference with the ATL based integration. The ATL classes are not as easily subclassable as their MFC counterpart. This is due to the nature of ATL and templates programming in particular. Instead of subclassing we recommend using the code provided by TSA as a direct starting point and so extending/modifying the features of the classes directly. See "Deriving your own Control" for a more in-depth look at this issue.
The HoopsStreamControl integration classes configure various components of the HOOPS 3D Application Framework appropriately for the ActiveX environment and manage control-level issues such as:
ActiveX Controls
ActiveX controls (formerly called OLE controls) are objects which may be inserted into Web pages or any documents able to be read by ActiveX container applications (such as the MS Office suite). Examples include buttons, stock tickers, and chart controls.
ActiveX Documents
ActiveX documents can be displayed by Web browsers or document viewers. Traditional embedded objects were limited to one page and were shown embedded in the document. With ActiveX, the document can be displayed full frame in the entire client area window.
ActiveX Server Framework
You can extend a Web server to provide customized Web pages using content from a database or an application which runs on the server.
Internet Data Download Services
Data can be downloaded over the Internet using common protocols: HTTP, FTP, and gopher.
Active Scripts
VBScript and other scripting languages connect controls and add interactive functionality to Web pages. Scripting moves processing from the server to the client. For example, form entries can be validated on the client and then sent to the server.
HTML Extensions
HTML extensions, such as the object tag, have been added to support controls and scripting.
class ATL_NO_VTABLE CHoops3dStreamCtrl :
public CComObjectRootEx<CComSingleThreadModel>,
public CStockPropImpl<CHoops3dStreamCtrl, IHoops3dStreamCtrl, &IID_IHoops3dStreamCtrl, &LIBID_Hoops3dStreamLib>,
public CComControl<CHoops3dStreamCtrl>,public IPersistStreamInitImpl<CHoops3dStreamCtrl>,
public IOleControlImpl<CHoops3dStreamCtrl>,
public IOleObjectImpl<CHoops3dStreamCtrl>,
public IOleInPlaceActiveObjectImpl<CHoops3dStreamCtrl>,
public IViewObjectExImpl<CHoops3dStreamCtrl>,
public IOleInPlaceObjectWindowlessImpl<CHoops3dStreamCtrl>,
public IConnectionPointContainerImpl<CHoops3dStreamCtrl>,
public IPersistStorageImpl<CHoops3dStreamCtrl>,
public ISpecifyPropertyPagesImpl<CHoops3dStreamCtrl>,
public IQuickActivateImpl<CHoops3dStreamCtrl>,
public IDataObjectImpl<CHoops3dStreamCtrl>,
public IProvideClassInfo2Impl<&CLSID_Hoops3dStreamCtrl, &DIID__IHoops3dStreamCtrlEvents, &LIBID_Hoops3dStreamLib>,
public IPropertyNotifySinkCP<CHoops3dStreamCtrl>,
public IPersistPropertyBagImpl<CHoops3dStreamCtrl>,
public CComCoClass<CHoops3dStreamCtrl, &CLSID_Hoops3dStreamCtrl>
.
Choops3dStreamCtrl
This is the main control class which handles nearly all COM/ActiveX related tasks. It also holds pointers to the MVO HBaseModel and HbaseView object as well as HDB.
HCtrlDB
This class is derived from HDB and manages the instance of the HOOPS database, keeping a referece count of the currently active control windows.
HctrlView
Derived from HbaseView this class handles the various visual state changes of the control (edit mode, design mode, etc.), as well as other control specific view functionality
HnetMgr
Encapsulates communication with the Hnet server
HnetClientMgr
Encapsulates communication with the Hnet client
DataLoader
Manages asynchronous streaming of HSF files and other data