Working with Toolbars: Implementation Details
To add toolbars using IExtendControlBar
Implement the IExtendControlbar interface and its two methods, SetControlBar and ControlbarNotify.
The snap-in's IComponent implementation should implement and expose the IExtendControlbar interface.
In the snap-in's implementation of SetControlBar:
- Cache the IControlBar interface pointer that is passed into SetControlBar. Use this interface pointer to call the IControlBar methods.
- Call IControlBar::Create with the nType parameter set to TOOLBAR to create a new toolbar. The pExtendControlbar parameter specifies the snap-in's IExtendControlbar interface associated with the control. The ppUnknown parameter will hold a pointer to the address of the IUnknown interface of the new toolbar control. Use this pointer to call the methods of the IToolbar interface associated with the new toolbar control.
- Add bitmaps by calling IToolbar::AddBitmap. Call this method only once to add all the toolbar bitmaps at one time.
- Fill an MMCBUTTON structure for each toolbar button that the snap-in adds and then add the buttons by calling IToolbar::AddButtons to add an array of buttons or IToolbar::InsertButton to add a single button.
In the snap-in's implementation of ControlbarNotify, handle the toolbar-specific notification messages that MMC sends during calls to the ControlbarNotify method. There are three such notifications: MMCN_BTN_CLICK, MMCN_SELECT, and MMCN_DESELECT_ALL.
- The MMCN_SELECT notification message is sent to the snap-in's ControlbarNotify method when an item is selected or deselected in either the scope pane or result pane. The snap-in can respond to this notification by attaching its toolbar to the toolbar control (using IControlbar::Attach) during selection of an item and then detaching the toolbar (using IControlbar::Detach) during deselection of that item.
- The MMCN_BTN_CLICK notification message is sent to the snap-in's ControlbarNotify implementation when a user clicks one of the snap-in's toolbar buttons. MMC sends this notification with the same command identifier (idCommand) that the snap-in assigned to the button in its MMCBUTTON structure when it added the button. The snap-in can process the command and then return S_OK.
Implement a mechanism for setting the attributes of the toolbar buttons using the IToolbar::SetButtonState method.
Related topics