View Single Post
  #6  
Old February 25th 09, 04:01 PM posted to microsoft.public.outlook.program_addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Adding a button to existing ribbon

ATL/C++ I can't help with at all.

I sometimes use an unsupported method of working with the ribbon when
compiling for Outlook 2000 or 2002 (or 2003) addins that uses an
XLIRibbonExtensibility.tlb as a ribbon reference. I implement that interface
in my addin code and that lets me handle ribbon callbacks, etc. without
having to reference the Office 2007 libraries.

Another method is to use a PIA-less approach, which is outlined by Andrew
Whitechapel of the VSTO team on his blog. See
http://blogs.msdn.com/andreww/archiv...of-office.aspx

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"Tom" wrote in message
...
Hi Ken,

Thanks - I think I got it!!! Now I have to figure out how I can use the
same set of source code for Outlook 2002 and above.

We develop all our add-ins using ATL/C++.

We use alot of Extended MAPI functionality and have a requirement of no
.NET.

Thanks,
Tom -

"Ken Slovak - [MVP - Outlook]" wrote in message
...
The idea is to handle the GetCustomUI callback. It fires only the first
time an item type is opened in that Outlook session and passes you a
string ribbonID argument, which is the type of item being opened.

This is a C# example of handling that callback for new mail items:

public string GetCustomUI(string ribbonID)
{
//RibbonID indicates type of Inspector that is about to be
displayed,
// valid RibbonID values are as follows:
//Microsoft.Outlook.Mail.Read
//Microsoft.Outlook.Mail.Compose
//Microsoft.Outlook.MeetingRequest.Read
//Microsoft.Outlook.MeetingRequest.Send
//Microsoft.Outlook.Appointment
//Microsoft.Outlook.Contact
//Microsoft.Outlook.Journal
//Microsoft.Outlook.Task
//Microsoft.Outlook.DistributionList
//Microsoft.Outlook.Report
//Microsoft.Outlook.Resend
//Microsoft.Outlook.Response.Read
//Microsoft.Outlook.Response.Compose
//Microsoft.Outlook.Response.CounterPropose
//Microsoft.Outlook.RSS
//Microsoft.Outlook.Post.Read
//Microsoft.Outlook.Post.Compose
//Microsoft.Outlook.Sharing.Read
//Microsoft.Outlook.Sharing.Compose

//In this sample only new mail Inspector is handled for a
button.

switch (ribbonID)
{
case "Microsoft.Outlook.Mail.Compose":
// Return the RibbonX markup stored as a resource in
the project
return Resources.CustomRibbon;
default:
{
return String.Empty;
}
}
}


I'm not sure what version of VS you're using or if you're using a shared
addin or a VSTO addin, but you can download the Outlook 2007 templates I
have on my Web site (for VS 2005 for both shared and VSTO addins).

Those have simple XML for adding 2 groups to a custom tab in a new email
message. Each group gets 3 buttons. The templates are in C# and VB.NET
(and VB6). They're at
http://www.slovaktech.com/outlook_2007_templates.htm.

For reference you should also download the schemas for Office 2007, you
need those for the correct names for the ribbon UI and to locate a group
within an existing tab or in the Office button groups.

As I mentioned, they're pretty basic (from my book). The XML itself looks
like this (from the VSTO C# sample):

?xml version="1.0" encoding="utf-8" ?
customUI xmlns = "http://schemas.microsoft.com/office/2006/01/customui"
onLoad = "Ribbon_OnLoad"
ribbon
tabs
tab id="VSTO_CSAddinTab" label="VSTO_CS Addin" visible="true"
insertAfterMso="TabNewMailMessage"
group id="VSTO_GroupCSSettings" label="Settings for this E-mail"
visible="true"
toggleButton id="VSTO_CS1" size="normal" label="HTML"
onAction="CSToggle" getPressed="CSPressed" getImage="CS_GetImage" /
toggleButton id="VSTO_CS2" size="normal" label="Plain Text"
onAction="CSToggle" getPressed="CSPressed" getSupertip="CS_GetSuperTip"
getImage="CS_GetImage" /
toggleButton id="VSTO_CS3" size="normal" label="Rich Text"
getSupertip="CS_GetSuperTip" onAction="CSToggle" getPressed="CSPressed"
getImage="CS_GetImage" /
/group
group id="VSTO_GroupCSActions" label="Actions for this E-mail"
visible="true"
button id="VSTO_CS4" size="normal" label="Insert..."
getSupertip="CS_GetSuperTip" onAction="CS_Action" getImage="CS_GetImage"
/
button id="VSTO_CS5" size="normal" label=" " /
button id="VSTO_CS6" size="normal" label="Configure..."
onAction="CS_Action" getSupertip="CS_GetSuperTip" getImage="CS_GetImage"
/
/group
/tab
/tabs
/ribbon
/customUI

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"Tom" wrote in message
...
Thanks Ken,

The only examples I have seen do not do anything with the new message
window. I am kind of confused on how to implement ribbon group just for
those windows.

Thanks,
Tom -






Ads