Vous pouvez créer des compléments ActiveX pour ajouter des fonctionnalités supplémentaires dans PowerAMC, et les appeler via des commandes de menu.
HRESULT Initialize([in] IDispatch * pApplication) and HRESULT Uninitialize() - La méthode Initialize() initialise les communications entre PowerAMC et le complément. PowerAMC fournit un pointeur vers son objet application, défini dans la bibliothèque de type PdCommon, qui permet d'accéder à l'environnement PowerAMC (fenêtre de résultats, modèle actif, etc.). La méthode Uninitialize() est appelée lorsque PowerAMC est fermé afin de libérer toutes les variables globales et références aux objet PowerAMC.
BSTR ProvideMenuItems([in] BSTR sMenu, [in] IDispatch *pObj) - est appelé chaque fois que PowerAMC doit afficher un menu, et renvoie un texte XML qui décrit les éléments de menu à afficher. Il est appelé une fois sans paramètre d'objet à l'initialisation de PowerAMC pour remplir les menus Importer et Reverse engineering. Lorsque vous faites un clic droit sur un symbole dans un diagramme, cette méthode est appelée deux fois : une fois pour l'objet et l'autre pour le symbole. Par conséquent, vous pouvez créer une méthode qui n'est appelée que dans les menus contextuels graphiques.
<!ELEMENT Menu (Command | Separator | Popup)*> <!ELEMENT Command> <!ATTLIST Command Name CDATA #REQUIRED Caption CDATA #REQUIRED> <!ELEMENT Separator> <!ELEMENT PopUp (Command | Separator | Popup)*> <!ATTLIST PopUp Caption CDATA #REQUIRED>Par exemple :
ProvideMenuItems ("Object", pModel)renvoie le texte suivant :
<Menu> <Popup Caption="&Perforce"> <Command Name="CheckIn" Caption="Check &In"/> <Separator/> <Command Name="CheckOut" Caption="Check &Out"/> </POPUP> </MENU>
BOOL IsCommandSupported([in] BSTR sMenu, [in] IDispatch * pObject, [in] BSTR sCommandName) - permet de désactiver de façon dynamique les commandes définies dans un menu. La méthode doit renvoyer true pour activer une commande et false pour la désactiver.
DoCommand ("Object", pModel, "CheckIn")