Creating custom toolbar controls for Excel
Outlook, Word, PowerPoint in VB.NET, C#, C++
AAll Office applications have different window architectures. All Office windows themselves are different. All our control adapters have a unified programming interface but different internal architectures that take into account the windows architecture of the corresponding applications. All features of all control adapters are described below.
Outlook has two main windows - Explorer and Inspector windows. The user can open several Explorer and Inspector windows. Our Outlook control adapter supports non-Office controls on both the Explorer and Inspector windows, and creates an instance of your control whenever the user opens a new Explorer or Inspector window.
Please note, if Word is used as an e-mail editor, Outlook uses MS Word as an Inspector window. In this case, Word is running in a separate process. It does not provide any ways to control all instances of your control. So, there is one feature with Word as an e-mail editor: the Outlook control adapter hides all instances of your control on all inactive Word Inspector windows, but shows them once the Inspector is activated. See also a sample project showing how to add a custom .NET control to Outlook commandbar.
In spite of the fact that Excel allows placing its windows on the Task Bar, all its commandbars work like in MDI applications. So, your controls are created only once, when Excel is started. However, you can still use the WorkbookActivate, WindowActivate and SheetActivate events to initialize your non-Office controls according to the context.
Word creates its commandbars for all document windows, so your non-Office controls are instanced whenever the user opens a new window or a document. We recommend using the WindowActivate event to initialize your control for the current window.
Notwithstanding the fact that PowerPoint makes possible placing its windows on the Task Bar, PowerPoint is an MDI application. So, your controls are created only once, when PowerPoint is started. However, you can still use the WindowActivate event to initialize your non-Office controls according to the context.