<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx</link><description>Today's Guest Writer: Eric Faller Eric is a Software Design Engineer on the Office User Experience team focused on user interface extensibility for Office developers. Another source of frequently-asked RibbonX questions is around the complexity of writing</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1241845</link><pubDate>Fri, 08 Dec 2006 23:20:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1241845</guid><dc:creator>Andy</dc:creator><description>&lt;p&gt;This is great information.&lt;/p&gt;
&lt;p&gt;Can I do this without Visual Studio 2005?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1242098</link><pubDate>Sat, 09 Dec 2006 01:12:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1242098</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Yep - the steps should be the same if you are using Visual Studio .NET (2001/2003). &amp;nbsp;I am not sure about previous versions of VS (6, etc.)&lt;/p&gt;
&lt;p&gt;If you aren't using Visual Studio at all, check your C++ compiler documentation to see if it supports building COM add-ins for Office. &amp;nbsp;If it doesn't have explicit support, you may have to write a lot of code by hand in order to duplicate all the stuff that Visual Studio generates automatically.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1242500</link><pubDate>Sat, 09 Dec 2006 02:29:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1242500</guid><dc:creator>Andre</dc:creator><description>&lt;p&gt;Could you please upload the sample project?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1242794</link><pubDate>Sat, 09 Dec 2006 03:55:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1242794</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;I sent the example project to Jensen, but it looks like he might have just left for a nice long vacation. &amp;nbsp;He probably won't be around to update the article for a while, so in the meantime you can download the sample project here:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://efaller.com/work/ExampleATLAddIn.zip"&gt;http://efaller.com/work/ExampleATLAddIn.zip&lt;/a&gt; &lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1242962</link><pubDate>Sat, 09 Dec 2006 04:48:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1242962</guid><dc:creator>jensenh</dc:creator><description>&lt;p&gt;I'll post the solution on officeblogs.net and link it to the article tonight.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1253007</link><pubDate>Sun, 10 Dec 2006 22:51:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1253007</guid><dc:creator>jensenh</dc:creator><description>&lt;p&gt;OK, it's posted. &amp;nbsp;Check the last line of the updated post.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1259618</link><pubDate>Mon, 11 Dec 2006 18:07:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1259618</guid><dc:creator>Connor</dc:creator><description>&lt;p&gt;This is great. It's exactly what I've been looking for.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1261089</link><pubDate>Tue, 12 Dec 2006 00:01:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1261089</guid><dc:creator>David</dc:creator><description>&lt;p&gt;Can I do this with the Express Editions from MS? &amp;nbsp;This is great to be able to customize.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1261448</link><pubDate>Tue, 12 Dec 2006 00:54:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1261448</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;I don't have the Express Editions installed to test this so I'm not absolutely sure, but according to this VS feature matrix, it appears that the Express Editions do not support &amp;quot;writing add-ins&amp;quot; under Extensibility :(&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://msdn2.microsoft.com/en-us/vstudio/aa700921.aspx"&gt;http://msdn2.microsoft.com/en-us/vstudio/aa700921.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1276332</link><pubDate>Wed, 13 Dec 2006 19:31:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1276332</guid><dc:creator>Kevin</dc:creator><description>&lt;p&gt;This is excellent information, this is the only place that I have seen with comprehensive steps for adding ribbon support in unmanaged code. I do have one question though, I have everything running well but cannot seem to get the Id or Tag from the IRibbonControl in any of my callbacks. I am able to find the dispid without a problem using getidsofnames with “Id” and “Tag” but invoke always fails. Is there something that I am doing blatantly wrong. Could you post a code snippet for doing this? Thank you very much!&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1276579</link><pubDate>Wed, 13 Dec 2006 20:49:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1276579</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;I'm not sure why it isn't working - are you using DISPATCH_PROPERTYGET instead of DISPATCH_METHOD?&lt;/p&gt;
&lt;p&gt;Normally I wouldn't use the IDispatch interface - in this case I'd just use the IRibbonControl interface, like this:&lt;/p&gt;
&lt;p&gt;Office::IRibbonControl *pRibbonControl;&lt;/p&gt;
&lt;p&gt;pDispatch-&amp;gt;QueryInterface(Office::IID_IRibbonControl, (void**)(&amp;amp;pRibbonControl));&lt;/p&gt;
&lt;p&gt;pRibbonControl-&amp;gt;get_Tag(&amp;amp;bstrTag);&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1287631</link><pubDate>Thu, 14 Dec 2006 22:36:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1287631</guid><dc:creator>Agron</dc:creator><description>&lt;p&gt;I don't need to own office 12 to use MSO.DLL do I? Can I install my application that uses these cool controls on computers that don't have office 12?&lt;/p&gt;
&lt;p&gt;Is there a redist package?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1287672</link><pubDate>Thu, 14 Dec 2006 23:01:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1287672</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;MSO.DLL is part of Office, and RibbonX only applies to 'eXtending' the built-in UI of Office, so it's not actually a full-featured set of components that can be reused in other apps.&lt;/p&gt;
&lt;p&gt;But, the UI can be licensed for free, see this post for details:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/jensenh/archive/2006/11/21/licensing-the-2007-microsoft-office-user-interface.aspx"&gt;http://blogs.msdn.com/jensenh/archive/2006/11/21/licensing-the-2007-microsoft-office-user-interface.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are several 3rd-party component vendors that provide controls you can use in your own apps. &amp;nbsp;For example:&lt;/p&gt;
&lt;p&gt;- DotNetBar (&lt;a rel="nofollow" target="_new" href="http://www.devcomponents.com/dotnetbar/"&gt;http://www.devcomponents.com/dotnetbar/&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;- SandRibbon (&lt;a rel="nofollow" target="_new" href="http://www.divelements.com/net/controls/sandribbon/"&gt;http://www.divelements.com/net/controls/sandribbon/&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;- etc..&lt;/p&gt;
</description></item><item><title>Creating Custom Task Panes Using VSTO SE – A Beginner’s Guide</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1288327</link><pubDate>Fri, 15 Dec 2006 01:08:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1288327</guid><dc:creator>Building Office Business Applications</dc:creator><description>&lt;p&gt;In order to create Office Business Applications (OBAs), you need to understand the basics. There are&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1316591</link><pubDate>Mon, 18 Dec 2006 14:05:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1316591</guid><dc:creator>Gilles</dc:creator><description>&lt;p&gt;Great code ! I tried to do exactly the same thing in a shim DLL generated with the Shim Wizard v2 (my addin is in C#, but I need a C++/ATL DLL to deploy it in a better way). For an unknown reason, my callbacks aren't working. Actually, the GetCustomUI method is found correctly but my &amp;quot;OnAction&amp;quot; and &amp;quot;GetImage&amp;quot; callbacks are still not found. Any idea ?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1318021</link><pubDate>Mon, 18 Dec 2006 22:14:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1318021</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Note that GetCustomUI is called directly on the interface, but the callbacks use IDispatch, as discussed above. &amp;nbsp;Are you forwarding all of the IDispatch methods (GetIDsOfNames, Invoke(), etc) from your shim to your managed DLL?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1332097</link><pubDate>Wed, 20 Dec 2006 18:22:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1332097</guid><dc:creator>Gilles</dc:creator><description>&lt;p&gt;It works ! I used the IDispatchImpl class of ATL which implements the GetIDsOfNames(), Invoke() for me so it wasn't the problem. &lt;/p&gt;
&lt;p&gt;I finally managed to have the callbacks to work recreating a blank shared add-in with the wizard (like you did), implementing IRibbonExtensibility and ICallbackInterface and then including the CLR Loading methods of the Shim in this new addin. There was probably something wrong in the ATL options of the project generated by the Shim wizard.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1349479</link><pubDate>Sat, 23 Dec 2006 00:14:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1349479</guid><dc:creator>Ken Hagan</dc:creator><description>&lt;p&gt;&amp;quot;Note that Office queries the IRibbonExtensibility interface for IDispatch, instead of the main interface. Normally this is unimportant, but it allows complicated add-ins to split their IDispatch interfaces off onto multiple objects if they provide multiple IDispatch implementations. For example, Excel add-ins can provide User-Defined Functions (UDFs) via IDispatch, and they usually won't want to have all of their RibbonX callbacks and UDFs on the same object.&amp;quot;&lt;/p&gt;
&lt;p&gt;Er, you do realise that this violates the transitivity requirement for QueryInterface?&lt;/p&gt;
&lt;p&gt;(&lt;a rel="nofollow" target="_new" href="http://msdn2.microsoft.com/en-us/library/ms810016.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms810016.aspx&lt;/a&gt;)&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1349727</link><pubDate>Sat, 23 Dec 2006 01:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1349727</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Yes, if an add-in were to actually do this it would violate QI transitivity. &amp;nbsp;It's not recommended and most tools (ATL, CLR-COM interop, etc.) won't let you do it, but the option is there for complex C++ add-ins if they need it.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1367344</link><pubDate>Wed, 27 Dec 2006 06:33:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1367344</guid><dc:creator>john</dc:creator><description>&lt;p&gt;I am new to C++ and ATL; but, how the heck would I use late binding to do this stuff so my addin works in older versions of outlook? I appreciate any feedback or tips. Thanks!&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1367381</link><pubDate>Wed, 27 Dec 2006 07:00:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1367381</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Since you're using C++ it should be pretty straightforward to make your add-in work on both Outlook 2007 and older versions (at least as far as RibbonX is concerned). &lt;/p&gt;
&lt;p&gt;Previous versions of Outlook will simply not query for IID_IRibbonExtensibility, so you can have all that code there but it just won't run.&lt;/p&gt;
&lt;p&gt;Your best best will probably be to link your add-in against the OFFICE11 version of the MSO.DLL typelibrary and just manually copy over the GUID and definition of IRibbonExtensibility from the OFFICE12 version.&lt;/p&gt;
&lt;p&gt;It might work to just link against the 12 version and deploy that on 11, but I haven't tried it (I know that will not work for managed .NET add-ins because of PIA signing, but I am not sure about unmanaged).&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1368485</link><pubDate>Wed, 27 Dec 2006 10:47:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1368485</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Thanks! I did not realize using IDispatchImpl was already taking care of all this. I did try using OFFICE12 dll and everything worked fine all the way back to Outlook 2000. I don't undertand COM all that weel although I have created many programs (funny I know). Maybe I will try the GUID idea just to make sure??? Thanks again for the quick response.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1385483</link><pubDate>Sat, 30 Dec 2006 16:16:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1385483</guid><dc:creator>eddiedoey</dc:creator><description>&lt;p&gt;Is there any samples to get at the office button through code? It says its possible in the customization guide for developers, doesn't tell you how. &lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1385938</link><pubDate>Sat, 30 Dec 2006 20:47:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1385938</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;It's just a tag in the XML under &amp;lt;ribbon&amp;gt; so you can get at it just like it's another tab:&lt;/p&gt;
&lt;p&gt;&amp;lt;customUI ...&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;lt;ribbon&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp;&amp;lt;officeMenu&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;lt;!-- put your controls here --&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp;&amp;lt;/officeMenu&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;lt;/ribbon&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/customUI&amp;gt;&lt;/p&gt;
&lt;p&gt;Note that the Office Button itself cannot be altered, but the contents of the Office Menu can be (clicking the Button drops the Menu - the nomenclature is a bit confusing)&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1421308</link><pubDate>Sat, 06 Jan 2007 13:22:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1421308</guid><dc:creator>michelle yang</dc:creator><description>&lt;p&gt;Were looking for a UI Engineer, &amp;nbsp;I thought you might be interested in this job.&lt;/p&gt;
&lt;p&gt;If you are, please send your word doc resume asap. &amp;nbsp;Also they need someone who knows .Net&lt;/p&gt;
&lt;p&gt;Please see the following job description below. If your not interested if you can referr someone that would be great.&lt;/p&gt;
&lt;p&gt;Thanks Sean!&lt;/p&gt;
&lt;p&gt;Michelle Yang&lt;/p&gt;
&lt;p&gt;Technical Recruiter&lt;/p&gt;
&lt;p&gt;Senior UI Engineer - Build the future system for a fast growing technology company - San Francisco &lt;/p&gt;
&lt;p&gt;Location: San Francisco &amp;nbsp;Permanent Full Time &lt;/p&gt;
&lt;p&gt;The Senior Software Engineer – Presentation Tier will play a significant role in the design and development of the presentation tier components of real-time custom trading applications for capital markets using rich client technology such as Java Swing and .NET Windows Forms. &amp;nbsp;The candidate will be responsible for doing GUI development for a set of large complex applications rendering large data sets. &lt;/p&gt;
&lt;p&gt;Candidates must have experience in delivering real-time mission critical service based applications and a good understanding of issues involved in enterprise client-server software systems. &amp;nbsp;Working as part of a team the Senior Software Engineer will work on design and development of reusable, library level components for data manipulation and display in both the server presentation tier and desktop client. &amp;nbsp; &amp;nbsp;The core technology team provides application architecture and components for our application development and professional service teams. &amp;nbsp;Members of the senior engineering staff are expected to contribute to the design and architecture of library-level components used across our product suite, and must be able to educate our internal teams and external clients on using our components effectively. &amp;nbsp; We are looking for an individual with great communications and mentoring skills. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;We are looking for intelligent, professional candidates with a strong technical background, with experience in building sophisticated rich desktop clients as part of distributed multi-tiered applications. &amp;nbsp; The ideal candidate has experience in the presentation tier for real-time, high volume distributed systems, such as in finance or telecoms. A passion for high-quality user interfaces is a must, and an interest in or background in usability engineering is helpful. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;A preference will be given to candidates with relevant financial industry experience, in particular front-office pricing, trading, and real-time systems. &amp;nbsp;We will also consider candidates from a non-banking background provided that they have an equivalent strong technical background, with some real-time distributed systems experience. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;REQUIRED EXPERIENCE &lt;/p&gt;
&lt;p&gt;At least 5 years of professional experience in software development.&lt;/p&gt;
&lt;p&gt; Deep understanding of core programming topics such as multithreading, garbage collection, and distributed computing.&lt;/p&gt;
&lt;p&gt; Significant experience in designing, building, and maintaining library level software components used by multiple teams or products.&lt;/p&gt;
&lt;p&gt; Experience in building reusable GUI components in a modern window system framework.&lt;/p&gt;
&lt;p&gt; Substantial experience building client-server applications.&lt;/p&gt;
&lt;p&gt;Strong Object Oriented Analysis and Design skills.&lt;/p&gt;
&lt;p&gt;Strong communications and presentation skills.&lt;/p&gt;
&lt;p&gt;DESIRED EXPERIENCE &lt;/p&gt;
&lt;p&gt;Good understanding of and hand-on experience with both Java Swing and .NET Windows Forms. &lt;/p&gt;
&lt;p&gt;Exposure to usability design and engineering.&lt;/p&gt;
&lt;p&gt;Capital markets domain knowledge &amp;amp; experience, or an appetite to learn.&lt;/p&gt;
&lt;p&gt;Some exposure to Web client technologies&lt;/p&gt;
&lt;p&gt;EDUCATION &lt;/p&gt;
&lt;p&gt;B.S. in Computer Science or equivalent.&lt;/p&gt;
&lt;p&gt;CALL TO ACTION&lt;/p&gt;
&lt;p&gt;Keywords: Java, Swing, .Net, UI, multithreading, garbage collection, Core Java, Capital Markets, Fixed Income, real time applications, design and development, San Francisco&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1421310</link><pubDate>Sat, 06 Jan 2007 13:23:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1421310</guid><dc:creator>michelle yang</dc:creator><description>&lt;p&gt;Were looking for a UI Engineer, &amp;nbsp;I thought you might be interested in this job.&lt;/p&gt;
&lt;p&gt;If you are, please send your word doc resume asap. &amp;nbsp;Also they need someone who knows .Net&lt;/p&gt;
&lt;p&gt;Please see the following job description below. If your not interested if you can referr someone that would be great.&lt;/p&gt;
&lt;p&gt;Michelle Yang&lt;/p&gt;
&lt;p&gt;yangmichell@gmail.com&lt;/p&gt;
&lt;p&gt;Technical Recruiter&lt;/p&gt;
&lt;p&gt;Senior UI Engineer - Build the future system for a fast growing technology company - San Francisco &lt;/p&gt;
&lt;p&gt;Location: San Francisco &amp;nbsp;Permanent Full Time &lt;/p&gt;
&lt;p&gt;The Senior Software Engineer – Presentation Tier will play a significant role in the design and development of the presentation tier components of real-time custom trading applications for capital markets using rich client technology such as Java Swing and .NET Windows Forms. &amp;nbsp;The candidate will be responsible for doing GUI development for a set of large complex applications rendering large data sets. &lt;/p&gt;
&lt;p&gt;Candidates must have experience in delivering real-time mission critical service based applications and a good understanding of issues involved in enterprise client-server software systems. &amp;nbsp;Working as part of a team the Senior Software Engineer will work on design and development of reusable, library level components for data manipulation and display in both the server presentation tier and desktop client. &amp;nbsp; &amp;nbsp;The core technology team provides application architecture and components for our application development and professional service teams. &amp;nbsp;Members of the senior engineering staff are expected to contribute to the design and architecture of library-level components used across our product suite, and must be able to educate our internal teams and external clients on using our components effectively. &amp;nbsp; We are looking for an individual with great communications and mentoring skills. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;We are looking for intelligent, professional candidates with a strong technical background, with experience in building sophisticated rich desktop clients as part of distributed multi-tiered applications. &amp;nbsp; The ideal candidate has experience in the presentation tier for real-time, high volume distributed systems, such as in finance or telecoms. A passion for high-quality user interfaces is a must, and an interest in or background in usability engineering is helpful. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;A preference will be given to candidates with relevant financial industry experience, in particular front-office pricing, trading, and real-time systems. &amp;nbsp;We will also consider candidates from a non-banking background provided that they have an equivalent strong technical background, with some real-time distributed systems experience. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;REQUIRED EXPERIENCE &lt;/p&gt;
&lt;p&gt;At least 5 years of professional experience in software development.&lt;/p&gt;
&lt;p&gt; Deep understanding of core programming topics such as multithreading, garbage collection, and distributed computing.&lt;/p&gt;
&lt;p&gt; Significant experience in designing, building, and maintaining library level software components used by multiple teams or products.&lt;/p&gt;
&lt;p&gt; Experience in building reusable GUI components in a modern window system framework.&lt;/p&gt;
&lt;p&gt; Substantial experience building client-server applications.&lt;/p&gt;
&lt;p&gt;Strong Object Oriented Analysis and Design skills.&lt;/p&gt;
&lt;p&gt;Strong communications and presentation skills.&lt;/p&gt;
&lt;p&gt;DESIRED EXPERIENCE &lt;/p&gt;
&lt;p&gt;Good understanding of and hand-on experience with both Java Swing and .NET Windows Forms. &lt;/p&gt;
&lt;p&gt;Exposure to usability design and engineering.&lt;/p&gt;
&lt;p&gt;Capital markets domain knowledge &amp;amp; experience, or an appetite to learn.&lt;/p&gt;
&lt;p&gt;Some exposure to Web client technologies&lt;/p&gt;
&lt;p&gt;EDUCATION &lt;/p&gt;
&lt;p&gt;B.S. in Computer Science or equivalent.&lt;/p&gt;
&lt;p&gt;CALL TO ACTION&lt;/p&gt;
&lt;p&gt;Keywords: Java, Swing, .Net, UI, multithreading, garbage collection, Core Java, Capital Markets, Fixed Income, real time applications, design and development, San Francisco&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1437630</link><pubDate>Tue, 09 Jan 2007 06:31:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1437630</guid><dc:creator>bob</dc:creator><description>&lt;p&gt;I don't know how to implement like &amp;quot;home style in word 2007&amp;quot; ,I have known gallery,but I have tried many times and failed. I have read your html,but i have not found xml descption.Could you tell me how to &lt;/p&gt;
&lt;p&gt;implment it ?&lt;/p&gt;
&lt;p&gt;thanks&lt;/p&gt;
</description></item><item><title>offtopic</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1462129</link><pubDate>Sat, 13 Jan 2007 21:03:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1462129</guid><dc:creator>Paul Irish</dc:creator><description>&lt;p&gt;I know this isn't your doing, but hopefully someone in Microsoft is escalating this issue: &lt;a rel="nofollow" target="_new" href="http://www.campaignmonitor.com/blog/archives/2007/01/microsoft_takes_email_design_b.html"&gt;http://www.campaignmonitor.com/blog/archives/2007/01/microsoft_takes_email_design_b.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We just can't believe how absurd this is.&lt;/p&gt;
</description></item><item><title>Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1480576</link><pubDate>Wed, 17 Jan 2007 02:18:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1480576</guid><dc:creator>Visual C++ Team Blog</dc:creator><description>&lt;p&gt;Jensen Harris’ blog hosts an interesting article on Using RibbonX with C++ and ATL . RibbonX is the user&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1484526</link><pubDate>Wed, 17 Jan 2007 21:38:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1484526</guid><dc:creator>Michael</dc:creator><description>&lt;p&gt;I'm using C++ 6.0 I have implememnted GetIDsFromNames and Invoke. The problem I have is I can't get my Invoke to work correctly.&lt;/p&gt;
&lt;p&gt;For example OnAction callback I can do a GetIDsFromNames for ID (returns dispid 1) but when I try to Invoke it I get back an errorcode of 800a01a8&lt;/p&gt;
&lt;p&gt;In fact any callback gives me the same problem.&lt;/p&gt;
&lt;p&gt;Any ideas please ?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1484630</link><pubDate>Wed, 17 Jan 2007 22:18:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1484630</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;I don't know what that error code is. Where does it come from? &amp;nbsp;I'm confused about how you are calling Invoke, Office should call it automatically after GetIDsOfNames. &amp;nbsp;Do you have the &amp;quot;Show add-in user interface errors&amp;quot; option turned on, and does it give you any more information?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1484968</link><pubDate>Thu, 18 Jan 2007 00:38:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1484968</guid><dc:creator>Michael</dc:creator><description>&lt;p&gt;You are correct, Outlook is calling my Invoke method.&lt;/p&gt;
&lt;p&gt;Sorry I wasn't clear. It after this point that things are not working correctly.&lt;/p&gt;
&lt;p&gt;In my Invoke routine called by Outlook after makeing sure its the correct dispid I then do the following to get the Id of the RibbonControl - I know I canb use SmartPointers but I still get an error and I'm trying to track things down.&lt;/p&gt;
&lt;p&gt;Ribbon::IRibbonControl * pCtrl = NULL;&lt;/p&gt;
&lt;p&gt;LPDISPATCH pDisp = pDispParams-&amp;gt;rgvarg[0].pdispVal;&lt;/p&gt;
&lt;p&gt;pDisp-&amp;gt;QueryInterface(Ribbon::IID_IRibbonControl, (LPVOID *)&amp;amp;pCtrl);&lt;/p&gt;
&lt;p&gt;OLECHAR * szId = L&amp;quot;Id&amp;quot;;&lt;/p&gt;
&lt;p&gt;DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};&lt;/p&gt;
&lt;p&gt;DISPID dspid;&lt;/p&gt;
&lt;p&gt;VARIANT vtResult;&lt;/p&gt;
&lt;p&gt;// this returns S_OK and dispid = 1&lt;/p&gt;
&lt;p&gt;hr = pCtrl-&amp;gt;GetIDsOfNames(IID_NULL, &amp;amp;szId, 1, LOCALE_SYSTEM_DEFAULT, &amp;amp;dspid);&lt;/p&gt;
&lt;p&gt;// this returns 800a01a8&lt;/p&gt;
&lt;p&gt;hr = pCtrl-&amp;gt;Invoke(dspid, IID_NULL, lcid, DISPATCH_PROPERTYGET, &amp;amp;dispparamsNoArgs, &amp;amp;vtResult, NULL, NULL);&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1485308</link><pubDate>Thu, 18 Jan 2007 01:20:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485308</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Ah, I see now. &amp;nbsp;I'm not sure why it's returning that error, but maybe it is related to the LCID you are passing in (I don't see where that's defined).&lt;/p&gt;
&lt;p&gt;But, since you already have the IRibbonControl pointer, why don't you just call pCtrl-&amp;gt;get_Id(&amp;amp;bstrId) instead of doing all of the IDispatch stuff?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1485359</link><pubDate>Thu, 18 Jan 2007 01:29:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485359</guid><dc:creator>Michael</dc:creator><description>&lt;p&gt;The lcid is passed to me by Outlook - I have tried the default and it makes no difference.&lt;/p&gt;
&lt;p&gt;pCtrl-&amp;gt;get_Id(&amp;amp;bstrID) also fails with the same error.&lt;/p&gt;
&lt;p&gt;I'm doing the IDispatch stuff to try to figure out where there error is happening.&lt;/p&gt;
&lt;p&gt;The error code of 800a01a8 means something about Object Required - which I don't understand because I was passed the pointer to IRibbonControl.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1485562</link><pubDate>Thu, 18 Jan 2007 01:59:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485562</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;I am looking at the code for get_ID() and it can only return these values:&lt;/p&gt;
&lt;p&gt;0x80007000 E_OUTOFMEMORY&lt;/p&gt;
&lt;p&gt;0x80004005 E_FAIL&lt;/p&gt;
&lt;p&gt;0x80004003 E_POINTER&lt;/p&gt;
&lt;p&gt;0x00000000 S_OK&lt;/p&gt;
&lt;p&gt;So I have no idea where 0x800A01A8 is coming from (?).&lt;/p&gt;
&lt;p&gt;What kind of control is this and where is it? (Button, gallery, etc, in a custom tab on an Outlook inspector?)&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1485668</link><pubDate>Thu, 18 Jan 2007 02:32:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485668</guid><dc:creator>Michael</dc:creator><description>&lt;p&gt;Its a button control on a custom tab on the Outlook inspector.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1485706</link><pubDate>Thu, 18 Jan 2007 02:46:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485706</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;I can't reproduce the problem here, so I don't know what else to try :(. &amp;nbsp;I am using an ATL-generated IDispatch like discussed above, so it's possible it has something to do with your homemade IDispatch implementation, though I don't know what it would be.&lt;/p&gt;
&lt;p&gt;Hopefully you can work around it without needing the ID property, or you could try packing up a simple repro case and posting it in the Office support forums. &amp;nbsp;Someone there should be able to take a look at it.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1485736</link><pubDate>Thu, 18 Jan 2007 02:52:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485736</guid><dc:creator>Michael</dc:creator><description>&lt;p&gt;Thanks for trying. I need the ptr to IRibbonControl - all my buttons use the same OnAction callback - I then use the Id to distinguish which button I'm working with.&lt;/p&gt;
&lt;p&gt;An interesting thing that I have noted is that all my button callbacks, getVisible, getLabel etc are all passing me just one parameter in Invoke (which answers to a QueryInterface for IRibbonControl).&lt;/p&gt;
&lt;p&gt;Looking at the docs, getVisible should return 2 parameters ...&lt;/p&gt;
&lt;p&gt;So I'm not sure what is going on.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1507088</link><pubDate>Mon, 22 Jan 2007 12:42:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1507088</guid><dc:creator>lencastro</dc:creator><description>&lt;p&gt;if (!RibbonXml)&lt;/p&gt;
&lt;p&gt;		return E_POINTER;&lt;/p&gt;
&lt;p&gt;	 &amp;nbsp;*RibbonXml = SysAllocString(&lt;/p&gt;
&lt;p&gt;		L&amp;quot;&amp;lt;customUI xmlns=\&amp;quot;&lt;a rel="nofollow" target="_new" href="http://schemas.microsoft.com/office/2006/01/customui"&gt;http://schemas.microsoft.com/office/2006/01/customui&lt;/a&gt;\&amp;quot;&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;lt;ribbon startFromScratch=\&amp;quot;flase\&amp;quot;&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;lt;tabs&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp;&amp;lt;tab idMso=\&amp;quot;TabNewMailMessage\&amp;quot;&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;lt;group id=\&amp;quot;GroupTest\&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;label=\&amp;quot;Test\&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;insertAfterMso=\&amp;quot;GroupClipboard\&amp;quot;&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;button id=\&amp;quot;CustomButton\&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageMso=\&amp;quot;HappyFace\&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size=\&amp;quot;large\&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label=\&amp;quot;Click me!\&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; onAction=\&amp;quot;ButtonClicked\&amp;quot;/&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp; &amp;lt;/group&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;nbsp;&amp;lt;/tab&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;nbsp; &amp;lt;/tabs&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot; &amp;lt;/ribbon&amp;gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;		L&amp;quot;&amp;lt;/customUI&amp;gt;&amp;quot; &lt;/p&gt;
&lt;p&gt;	 &amp;nbsp;);&lt;/p&gt;
&lt;p&gt;	 &amp;nbsp;return (*RibbonXml ? S_OK : E_OUTOFMEMORY); &lt;/p&gt;
&lt;p&gt;In outlook 2007,i am adding a group test next to the clipboard in the Message tab.My above code is not working..Plz help&lt;/p&gt;
&lt;p&gt;Finally one more question?&lt;/p&gt;
&lt;p&gt;Also i need use xml file separately...plz tell me how to do it with vc++ 2005. &lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1508818</link><pubDate>Mon, 22 Jan 2007 20:03:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1508818</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Make sure to enable &amp;quot;Show add-in user interface errors&amp;quot; in the options dialog. &amp;nbsp;Then it will show you where your XML fails to validate. &amp;nbsp;I can see a couple of errors to fix, such as startFromScratch=\&amp;quot;flase\&amp;quot;.&lt;/p&gt;
&lt;p&gt;As for loading from a file, it's just a string, so it shouldn't be too difficult. Searching for &amp;quot;load string from file&amp;quot; ought to come up with some code examples.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1519362</link><pubDate>Wed, 24 Jan 2007 07:44:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1519362</guid><dc:creator>lencastro</dc:creator><description>&lt;p&gt;how to get a PNG file,how to converted into IpicureDisp and how to return back to office. give some sample code...&lt;/p&gt;
&lt;p&gt;one more question? why do we need to implement ICallbackInterface?&lt;/p&gt;
&lt;p&gt;Plz &amp;nbsp; &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Explain in detail..&lt;/p&gt;
&lt;p&gt;i am using VC++2005&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1519504</link><pubDate>Wed, 24 Jan 2007 08:14:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1519504</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;For info on PNGs and IPictureDisps, see this other blog post:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/jensenh/archive/2006/11/27/ribbonx-image-faq.aspx"&gt;http://blogs.msdn.com/jensenh/archive/2006/11/27/ribbonx-image-faq.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the example above, the ATL classes use the typeinfo defined by ICallbackInterface in order to know how to invoke the callbacks, so it's necessary if you want to use ATL to auto-generate your IDispatch implementation. &amp;nbsp;If you're not using ATL, it's not necessary.&lt;/p&gt;
&lt;p&gt;You might have better luck posting further questions to the official support groups linked at the bottom of the article above. &amp;nbsp;This is not a support forum.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1520765</link><pubDate>Wed, 24 Jan 2007 12:37:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1520765</guid><dc:creator>tanie linie lotnicze</dc:creator><description>&lt;p&gt;&amp;quot;you may have an older type library registered instead (such as &amp;quot;Office 11.0 Object Library&amp;quot;) if you previously had older versions of Office installed on the same computer. In those cases you can just browse to the &amp;quot;OFFICE12&amp;quot; version of MSO.DLL and select it manually.&amp;quot;&lt;/p&gt;
&lt;p&gt;Can I download this file from microsoft web site?&lt;/p&gt;
&lt;p&gt;best regards from &lt;a rel="nofollow" target="_new" href="http://www.aerofun.gsi.pl"&gt;http://www.aerofun.gsi.pl&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1522291</link><pubDate>Wed, 24 Jan 2007 19:37:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1522291</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;No, MSO.dll is part of Office. &amp;nbsp;It doesn't make sense to download it separately because you could not test any code written against it unless you have Office 2007 installed.&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1533014</link><pubDate>Fri, 26 Jan 2007 03:38:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1533014</guid><dc:creator>Sean Rohead</dc:creator><description>&lt;p&gt;Your code works great for creating new ribbon items, but I'm having problems repurposing an existing ribbon item.&lt;/p&gt;
&lt;p&gt;I have added the following to my xml:&lt;/p&gt;
&lt;p&gt; &amp;nbsp;&amp;lt;commands&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;&amp;lt;command idMso=&amp;quot;FileSaveAs&amp;quot; onAction=&amp;quot;BuiltInControlClicked&amp;quot;/&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;&amp;lt;command idMso=&amp;quot;FileSaveAsPowerPoint97_2003&amp;quot; onAction=&amp;quot;BuiltInControlClicked&amp;quot;/&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp;&amp;lt;/commands&amp;gt;&lt;/p&gt;
&lt;p&gt;I have added the following to my idl:&lt;/p&gt;
&lt;p&gt;	[id(6), helpstring(&amp;quot;method BuiltInControlClicked&amp;quot;)] HRESULT BuiltInControlClicked([in] IDispatch* ribbonControl, [in,out] VARIANT_BOOL* cancel);&lt;/p&gt;
&lt;p&gt;I have added the following to my CConnect class:&lt;/p&gt;
&lt;p&gt;	STDMETHOD(BuiltInControlClicked)(IDispatch* ribbonControl, VARIANT_BOOL* cancel);&lt;/p&gt;
&lt;p&gt;However, I get an error when Office tries to call the callback (&amp;quot;An error occurred while calling the callback&amp;quot;).&lt;/p&gt;
&lt;p&gt;Any suggestions about what I might be doing wrong?&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1533197</link><pubDate>Fri, 26 Jan 2007 04:24:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1533197</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;This error message means that the IDispatch::Invoke() call returned a failure HRESULT code, but the EXCEPINFO was not filled in and the code was not E_INVALIDARG or DISP_E_BADPARAMCOUNT (each of those conditions would give you a different message).&lt;/p&gt;
&lt;p&gt;So my first thought would be that your callback is successfully getting invoked, but maybe it's returning a failure code?&lt;/p&gt;
&lt;p&gt;If not, then the error code must be coming from the ATL classes that implement your IDispatch for you (maybe ATL is determining that your IDL info is malformed or something like that). When you added the new method to your IDL, did you use the ATL wizard to do it? You can do it manually, but the wizard does several steps which are easy to miss when doing it manually (updating the IDL, the typeinfo, the interface, the implementation, etc.)&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1537603</link><pubDate>Fri, 26 Jan 2007 21:05:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1537603</guid><dc:creator>Sean Rohead</dc:creator><description>&lt;p&gt;I have a breakpoint in my callback which is never reached so the ATL classes must be returning the error. &amp;nbsp;I created the callback once manually firat and then created a second callback using the ATL wizard and got the same result both times. &amp;nbsp;Is it possible that the documentation about the expected method signature is out of date?&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1537695</link><pubDate>Fri, 26 Jan 2007 21:34:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1537695</guid><dc:creator>efaller</dc:creator><description>&lt;p&gt;Sorry about that - you're right that the signature in the documentation is out of date. &amp;nbsp;For the second parameter it should be &amp;quot;VARIANT*&amp;quot; instead of &amp;quot;VARIANT_BOOL*&amp;quot; in order to work with ATL's IDispatch parameter marshaling.&lt;/p&gt;
&lt;p&gt;I figured that was not the problem since I would expect E_INVALIDARG to be returned in this case, but ATL seems to return a generic error code instead.&lt;/p&gt;
&lt;p&gt;I'll get that documentation page updated with a note to use VARIANT instead of VARIANT_BOOL if you're using ATL.&lt;/p&gt;
&lt;p&gt;Thanks for pointing out this problem!&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1538185</link><pubDate>Sat, 27 Jan 2007 00:43:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1538185</guid><dc:creator>Sean Rohead</dc:creator><description>&lt;p&gt;Changing the method signature fixed my problem.&lt;/p&gt;
&lt;p&gt;Thanks!!&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1549515</link><pubDate>Mon, 29 Jan 2007 05:43:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1549515</guid><dc:creator>Paul O'Rama</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;This is an informative blog, but it's updates are too infrequent. Can you update on a more regualr basis?&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Paul&lt;/p&gt;
</description></item><item><title>re: Using RibbonX with C++ and ATL</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#1607009</link><pubDate>Tue, 06 Feb 2007 02:18:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1607009</guid><dc:creator>boe</dc:creator><description>&lt;p&gt;I appreciate the article but one would have to ask why the chuck didn't MS just include the ability to drag and drop &amp;quot;ribbons/commands/buttons into the tabs. &amp;nbsp; Hmm - before it was right click on the toolbar, customize - remove buttons I didn't use drag in buttons I did. &amp;nbsp; Now if I just learn programming I could probably create a button in 5 minutes - times the 30 I would change - OH yes, much simpler - thanks MS!&lt;/p&gt;
</description></item><item><title>Anothr feed track -Jensen Harris: An Office User Interface Blog</title><link>http://blogs.msdn.com/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx#2046609</link><pubDate>Sat, 07 Apr 2007 21:35:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2046609</guid><dc:creator>anothr user</dc:creator><description>&lt;p&gt;One new subscriber from Anothr Alerts&lt;/p&gt;
</description></item></channel></rss>