Skip Navigation LinksBCGSoft > Support > Developer Area > User Tools

User Tools

BCGControlBar Library framework supports user-defined tools. User-defined tool is a special menu item, that executes an external, specified by the user, program. User-defined tools management is a part of customization process, implemented by the framework.

The customization dialog automatically inserts the "Tools" property page, if enabled. The following is a picture of the "Tools" page:

BCGControlBar for MFC: user tools

To enable user-defined tools in the application you need to perform the following steps:

  1. In the resource editor create a dummy menu item with ID_TOOLS_ENTRY command ID.
  2. Optionally, you can help your users with selection of directories and arguments for the tools (external programs). In the resource editor create two popup menus ID_MENU_ARGS and ID_MENU_DIRS.
  3. You have to inform the framework how many user-defined tools are allowed in your application. The command IDs for the tools must take continuous numbers. For example, define ID_USER_TOOL1 to ID_USER_TOOL10 in the string table to allow ten tools.
  4. Call CBCGPWorkspace::EnableUserTools to enable user-defined tools. Specify ID_TOOLS_ENTRY as a dummy command ID, ID_USER_TOOL1 and ID_USER_TOOL10 as the interval of tools commands, RUNTIME_CLASS (CBCGPUserTool) for the class that handles specific user tool. The ID_MENU_ARGS and ID_MENU_DIRS popup menus are optional.
  5. When you invoke the customization dialog (OnViewCustomize, in this example), always call CBCGPToolbarCustomize::EnableTools to insert the "Tools" page into the customization property sheet.
Note: the framework will search for ID_TOOLS_ENTRY and replace it with the actual user-defined tools entries, if any. If you want to implement a custom object, which handles user tools, derive a class from the CBCGPUserTool class and provide its runtime class information when calling EnableUserTools

If you need to predefine some tools at the application startup:

  1. Override the LoadFrame function (it is a member of CBCGPFrameWnd, CBCGPMDIFrameWnd and CBCGPOleIPFrameWnd classes).
  2. Obtain a pointer to the CBCGPUserToolsManager object by calling CBCGPWorkspace::GetUserToolsManager.
  3. For each tool you want to create call CBCGPUserToolsManager::CreateNewTool. It returns a pointer to a CBCGPUserTool object and adds the newly created user tool to the internal collection of tools.
  4. For each tool, set its text label and command (CBCGPUserTool::m_strLabel, CBCGPUserTool::SetCommand). The default implementation of CBCGPUserTool automatically retrieves available icons from the specified in SetCommand program.
Note: if you derive your own class from CBCGPUserTool and have provided its runtime information in CBCGPWorkspace::EnableUserTools, CreateNewTool dynamically creates CBCGPUserTool-derived object.

Back to the Developer Area