1.2 C3PO Registration

Each C3PO must appear in the Windows system registry under a series of names that identify the C3PO to the GroupWise environment. Information stored in the registry includes ProgID identifications for C3POServers, hints about how the C3PO is to be used, and identification information. This information registers the C3PO with the GroupWise environment.

The registration naming system identifies a type relationship to GroupWise and is used to support inheritance of behavior. Names in the system are of the form GW.Classtype.Subtype. Classtype identifies the category of C3PO being registered (see GW.CLIENT). Subtype is used to relate one C3PO to another for purposes of supporting inheritance of behavioral semantics.

As each C3PO is registered with GroupWise, an association between the C3POServer and a particular type name is made. It is possible to register more than one C3PO at a specific naming point, but be careful when doing so because many operations have meaning only when bound to a single C3PO instance. To guarantee correct behavior, GroupWise will bind to the first registered C3PO in those instances. It is generally preferable to use subtypes or COM TreatAs mechanisms rather than registering more than one C3PO at a specific naming point.

The C3PO naming system has some restrictions. Naming is accomplished by appending a period (.) to an existing type and including an extension, which indicates a subtype. There are fixed root names under which names can be registered. Only one of these root names can be extended by subtyping. The root names available for registration are GW.MESSAGE and GW.CLIENT.

This section covers the following topics:


C3PO software registered under this root name are intended to implement behavior of specific record types. That is, the C3PO intends to create, display, send, or manipulate individual records.

Each item must be a subtype of one of the following:


In addition, the following are two subtypes of GW.MESSAGE.MAIL that already exist in GroupWise:

  • GW.MESSAGE.MAIL.Internet


This root name indicates that the C3PO wants to implement some type of global behavior. Typically this is global menu modification, startup processing, or processing of delivery for all object types. The following subtypes are allowed:




Implements behavior local to the attachment viewer.


Implements behavior local to the browser window.


Implements behavior local to calendar windows.


Implements behavior local to a document version list window.


Implements behavior local to a query results window.


Implements behavior local to a properties window.


Implements behavior local to the quick viewer window.


Implements behavior when you right click in an attachment window (in GroupWise 5.5.EP and GroupWise 6.0).


Implements behavior when you right click in an outgoing attachment to a message (in GroupWise 5.5.EP and GroupWise 6.0).


Implements behavior when you right click on an incoming attachment to a message (in GroupWise 5.5.EP and GroupWise 6.0).

For example, to register a context menu item for the calendar, the C3PO must be registered under GW.CLIENT.WINDOW.CALENDAR.

1.2.3 Registry Definition

GroupWise refers to these registry entries to invoke the C3PO handlers. All registry entries appear as subkeys of the following entry:


Beneath this key appear entries for supported C3PO contexts, such as:


Each registry section for a specific context contains subkeys used for naming the object server. The subkeys at this level are the PROGIDs of the COM servers for the C3PO. The value of each subkey is a description of the C3POServer, such as:

...\GW.MESSAGE.MAIL.X\Vendor.ObjName.Version = "My Description"
...\GW.MESSAGE.MAIL.X\Vendor2.ObjName2.Version = "Your Description"

These examples indicate that Vendor.ObjName.Version is the PROGID of the COM server supporting the C3PO. Beneath each PROGID key are further subkeys that clarify the use of the C3POServer. The subkeys are Objects and Events.


This subkey is required. It identifies the objects that are supported by the C3PO. This is an optimization to allow loading of the C3PO to be deferred. This is also a multi-valued key. Each value names a particular object that is supported by the C3POServer, such as:

\ProgID\Objects = "CommandFactory" = "IconFactory"


This subkey identifies the events for which that the C3PO is interested in receiving notification messages. This is a multi-valued key. Each value names a particular event, such as:

\ProgID\Events = "OnDelivery" = "OnReady" = "OnShutdown" = "OnOverflow" =  
<Persistent Command ID>