CustomizeDialog is a modeless dialog that allows customization of one or more ToolbarControls.
The CustomizeDialog contains a modeless dialog that allows commands, toolbar definitions (toolsets), menu definitions and palette definitions to be added to a ToolbarControl at runtime, when the IToolbarControl::Customize property is set to true.
The CustomizeDialog is modeless to allow interaction with the ToolbarControl, which would otherwise be blocked if the dialog was modal. As such, the ICustomizeDialog::StartDialog method launches the CustomizeDialog on the screen and returns immediately, rather than waiting until the CustomizeDialog closes. Consequently, when the CoClass goes out of scope the CustomizeDialog will be closed. It is sensible practise to ensure the CustomizeDialog object remains alive while the container hosting the ToolbarControl is shown, by storing the CustomizeDialog object as a form (or class) level variable.
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.
|IConnectionPointContainer||Supports connection points for connectable objects.|
|ICustomizeDialog||Provides access to members that control the customize dialog.|
|ICustomizeDialog2||Provides access to members that control the customize dialog.|
|ISupportErrorInfo||Indicates whether a specific interface can return Automation error objects.|
|ICustomizeDialogEvents (default)||Provides access to events that occur when the customize dialog is opened or closed.|
Objects implementing IMultiItem cannot be added interactively to the ToolbarControl via the CustomizeDialog. They must be added to an existing ToolbarMenu using the IToolbarMenu2::AddMultiItem method.
When working with CustomizeDialog's default outbound interface in Visual Basic 6 declare variables as follows:
Private WithEvents pCustomizeDialog as CustomizeDialog