ccrpminilogo.gif (1886 bytes)  Knowledge Base
 KB Index    FAQ Index    Controls  
  
CCRP General Development Policies
Tuesday, January 06, 2004

INDEX
CCRP FAQ Index

CCRP Standards Document
23rd January 1998
The CCRP Team
Copyright © 1998-2004 Common Controls Replacement Project

    
(The CCRP Standards document is provided as information to indicate the stringent policies that CCRP developers adhere to during the creation of their controls.)


The following are standards that have been agreed upon by the CCRP members.

All CCRP controls should follow these standards unless there are exceptional circumstances (such as breaking binary compatibility for controls that have already been released), and in these cases you should consult the group.

General

  • Each control is assigned a three letter abbreviation referred to as xxx for the remainder of this document.
  • Filename in the form 'ccrpxxx.ocx' for SP2 version and 'ccrpxxxs.ocx' for SP0 version. (Note: SP0 versions no longer provided. See CCRP Policy: Development for Non-Service Pack Visual Basic above.)
  • The UserControl name should be in the form 'ccrpAnimation'
  • The Project Description should be in the form: 'CCRP Animation Control' to ensure that our controls are listed together in the Components Dialog Box.
  • The Project Name should be in the form 'CCRAnimation'
  • Versioning: Use 0 to indicate a beta with the beta in the minor field and build in the revision field. So, 0.6.83 indicates beta 6, build 83
  • All DLL Base Addresses are obtained from the project director.

Releasing Controls

  • At least one demo should be included with in the release zip and should demonstrate the main features of the control. Further advanced demos may also be included to demonstrate specific functionality (such as loading an AVI resource).
  • The demos should be installed in subdirectories
  • A help file should be provided. The help file should be created using Videosoft VSDOCX. Several standard pages should be provided in the help file which are provided in the template help project file.
  • Regsvr32.exe and a batch file that runs it should be included within the ZIP.
  • Readme.txt should be in a format similar to those that have already been released.
  • The ZIP should be called 'ccrpxxx.zip' or 'ccrpxxxs.zip'. In addition, for ActiveX.com distribution of controls which are made available in both SP and SP0 versions (ActiveX.com does not support downloads of multiple versions), it is necessary to provide a third zip called 'ccrpxxxX.zip' that includes both SP and SP0 zips, and an explanatory readme file.

Standard Properties

  • All controls should implement a ComCtlVer property that returns the version of comctl32.dll in the form x.xx.
  • Controls should expose a hWnd property that returns the hWnd of the common control.
  • Enums and their values should be prefixed with the three-digit abbreviation of the control ID, e.g.

                       Enum aniAppearanceConstants
                           aniFlat = 0
                           ani3D = 1
                       End Enum

  • For all controls that implement (expose) the same property, the same names *and* values should be used across controls. This minimizes user learning curves, reduces variable mix-up and possible coding errors. 

    For controls that only implement a subset of a larger grouping, then a mechanism to assure the same values are used is needed. For example, if controlA has property of xxxFlat as 1, xxxRaised as 2, and xxxSunken as 3, and controlB only implements raised and sunken, controlB's values should remain constant with controlA's. In other words. controlB's properties show the options 2 - xxxRaised and 3 - xxxSunken. The user only needs to learn one set of variables for a property and use it confidently across controls.

The current list of ‘standard’ Enums is:

Enum xxxAppearance
   xxxFlat = 0
   xxx3D = 1
   xxx3DRaised = 2
End Enum

Enum xxxBorderStyle
   xxxNone = 0
   xxxFixedSingle = 1
   xxxRaised3D = 2
End Enum

Public Enum aniBackStyleConstants
   xxxTransparent = 0
   xxxOpaque = 1
End Enum

Public Enum hkyDropModeConstants
   xxxNone = 0
   xxxManual = 1
End Enum