Helps commands work with the SceneControl, ArcScene, and custom controls and applications.
Product Availability
Description
The SceneHookHelper is designed to help developers write custom commands that will work with some ArcGIS Engine Controls and applications.
When creating a custom command the ICommand::OnCreate event is passed a hook to the control or application that the command will work with. The command needs to determine the type of hook that is passed so it knows how to handle itself. Rather than adding code into the ICommand::OnCreate event to determine the type of hook a SceneHookHelper object can do this. The SceneHookHelper is used to hold the hook and return the IScene, ISceneGraph, ISceneViewer and ICamera objects regardless of whether the hook is a SceneControl, ToolbarControl (with a 'buddy' SceneControl), the ArcScene application or a custom control or application implementing ISceneCommandHook.
When using the SceneHookHelper in the ICommand::OnCreate event of custom commands the following must be considered:
- Use the SceneHookHelper when the command is to support a variety of hook objects. If the command is to support one type of hook object only (e.g. a command that only works with ISxApplication in ArcScene) the SceneHookHelper does not offer anything over a simple interface pointer stored as a member variable in the command implementation.
- The SceneHookHelper is useful for writing ArcGIS Engine commands as it can handle the SceneControl or theToolbarControl passed as a hook. In the case of the ToolbarControl, the SceneHookHelper contains the logic for testing the ToolbarControl's Buddy to retieve IScene, ISceneGraph, ISceneViewer and ICamera objects.
- If the custom command is to work with the ArcGIS Controls on an ArcGIS Engine installation and inside the ArcScene desktop application, the SceneHookHelper can provide generic access to IScene, ISceneGraph, ISceneViewer and ICamera objects. There is a good chance an Engine command that starts from these objects will also work within ArcScene, providing that the IToolbarControl interface and other ArcGIS Control specific interfaces have not been used.
- If the custom command requires the use of additional objects and interfaces that are only present in an ArcScene Desktop installation, then ArcScene must be installed in order for these references to be resolved and for the code to compile. If the command makes use of desktop only objects the command will not work on a machine with only an ArcGIS Engine installation. One possible solution is for the command logic to test whether the hook object is a type of ArcGIS Control, and if so provide an alternative implemetation for an ArcGIS Engine only installation.
Extended Error Information
Use the ISupportErrorInfo method InterfaceSupportsErrorInfo to determine if the object supports extended error information. If the object supports extended error info, VC++ developers should use the OLE/COM IErrorInfo interface to access the ErrorInfo object. Visual Basic developers should use the global error object Err to retrieve this extended error information.
Interfaces
Interfaces | Description |
---|---|
IConnectionPointContainer | Supports connection points for connectable objects. |
ISceneHookHelper | Provides access to members needed when developing commands to work with the SceneControl, ArcScene, and custom controls and applications. |
ISupportErrorInfo | Indicates whether a specific interface can return Automation error objects. |
Event Interfaces
Interfaces | Description |
---|---|
IHookHelperEvents (default) | Provides access to events that occur when the state of a hook changes. |
Working with Events
When working with SceneHookHelper's default outbound interface in Visual Basic 6 declare variables as follows: Private WithEvents pSceneHookHelper as SceneHookHelper