<?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>How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx</link><description>Putting together the IContextMenu methods.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231746</link><pubDate>Mon, 20 Sep 2004 14:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231746</guid><dc:creator>Moi</dc:creator><description>Nice article, but it shouldn't be needed. The MSDN documentation really shouldn't require people to &amp;quot;read the contract from the other side&amp;quot;. I can only assume that the people who write the documentation think that everyone still uses RPN calculators.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231765</link><pubDate>Mon, 20 Sep 2004 15:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231765</guid><dc:creator>Raymond Chen</dc:creator><description>All interfaces can be read from both sides. Most people focus on the implementation side, but there's also the consumer side.&lt;br&gt;&lt;br&gt;How are you suggesting that the documentation should be changed? Should every interface say, &amp;quot;You can either implement or call this interface&amp;quot;?</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231803</link><pubDate>Mon, 20 Sep 2004 16:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231803</guid><dc:creator>Andy</dc:creator><description>MS programming docs are interesting. Some authors seem to write &amp;quot;cookbook&amp;quot; style. There is useful info in the remarks section and sometimes a link to sample code.&lt;br&gt;&lt;br&gt;Others are far more dictionary style. A terse description of the function or API with almost no clue as to how to use it to get useful work done.&lt;br&gt;&lt;br&gt;The latter requires reading between the lines and from the other side. Too much extrapolation in my opinion.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231804</link><pubDate>Mon, 20 Sep 2004 16:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231804</guid><dc:creator>Raymond Chen</dc:creator><description>I prefer the dictionary style myself. I think it has to do with which half of the brain you think with.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231822</link><pubDate>Mon, 20 Sep 2004 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231822</guid><dc:creator>Jeff Parker</dc:creator><description>A quick question in this 11 part series will you be demonstrating the .net implementations?&lt;br&gt;&lt;br&gt;System.Windows.Forms.ContextMenu&lt;br&gt;&lt;br&gt;Just curious, but don't let me disuade you from where you are going. I just haven't used C++ in at least 3 years since C# came out. And yeah I know there are other .net blogs but none of them compair to the Raymond and Larry Blogs for in depth detail and knowledge.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231824</link><pubDate>Mon, 20 Sep 2004 17:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231824</guid><dc:creator>Simon Cooke [exMSFT]</dc:creator><description>Raymond: Dictionary style only works if you have extensive sample code, the source code of the API implementation, or a large number of reference books to work from.&lt;br&gt;&lt;br&gt;That's the thing about Index knowledge; it lets you find what you're looking for. It doesn't, however, teach concepts or ideas.&lt;br&gt;&lt;br&gt;For an example of an API which desperately needs better sample code and some extensive real-world examples, see Uniscribe. While Uniscribe straddles the line between cookbook and dictionary in its documentation, it still leaves lots of questions regarding best practices et al unanswered.&lt;br&gt;&lt;br&gt;I guess what it all boils down to is this:&lt;br&gt;Dictionary-style doco is best when one already knows the subject at hand. Cookbook style is best when one needs to learn the subject. Good documentation includes both.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231871</link><pubDate>Mon, 20 Sep 2004 17:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231871</guid><dc:creator>Raymond Chen</dc:creator><description>I know zero about Windows Forms.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#231881</link><pubDate>Mon, 20 Sep 2004 17:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:231881</guid><dc:creator>mschaef</dc:creator><description>The thing that bothers me about reading the documentation &amp;quot;from the other side&amp;quot;, is that that's basically what Microsoft has to do to implement the Windows API in the first place.  Given all the trouble that Microsoft has had ensuring compatibility over the years, that doesn't give me much confidence in my own ability to produce a reasonable context menu host (or whatever). Obviously, ISV software doesn't have quite the same compatibility requirements as Windows itself, but given the lower resources most ISV's can bring to bear on the problem, implementing the API from the other side seems like it might be a fairly costly move.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232018</link><pubDate>Mon, 20 Sep 2004 22:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232018</guid><dc:creator>Michel van Kessel</dc:creator><description>I know zero too about Windows Forms!&lt;br&gt;</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232038</link><pubDate>Mon, 20 Sep 2004 23:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232038</guid><dc:creator>Wilfried Wieser</dc:creator><description>The MSDN documentation for most standard interfaces honors both sides by having &amp;quot;When to Implement&amp;quot;, &amp;quot;When to Use&amp;quot;, &amp;quot;Notes to Callers&amp;quot; and &amp;quot;Notes to Implementers&amp;quot; sections.&lt;br&gt;&lt;br&gt;Most interfaces, however, either have just a few implementors or they have just a few callers. The one more exclusive side of an interface becomes &amp;quot;the other side&amp;quot; of that interface. This side is harder to join because everybody tests against the few well known instances of this side. If somebody implements IContextMenu, he or she will most likely only test against the Windows Shell, despite the fact that &amp;quot;Context Menu&amp;quot; is a quite general term. If the code runs successfully in the shell, it is considered correct.&lt;br&gt;&lt;br&gt;This has been a major problem for unmanaged component software.&lt;br&gt;&lt;br&gt;In [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellCompatibility\Objects] there are strange flags like &amp;quot;CTXMENU_LIMITEDQI&amp;quot;, indicating that there are implementations of IContextMenu which may even get a menu host in trouble if he QI's the object differently than a previous version of the shell.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232060</link><pubDate>Mon, 20 Sep 2004 23:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232060</guid><dc:creator>asdf</dc:creator><description>For some more sample source code, I love ContextMenu:&lt;br&gt;&lt;br&gt;&lt;a target="_new" href="http://www.maddogsw.com/cmdutils/"&gt;http://www.maddogsw.com/cmdutils/&lt;/a&gt;&lt;br&gt;&lt;br&gt;It even has code to parse the menu to output text instead of displaying a GUI menu.</description></item><item><title>Too much code and not enough history?</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232073</link><pubDate>Tue, 21 Sep 2004 00:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232073</guid><dc:creator>Eric TF Bat</dc:creator><description>For the benefit of the people who just want the history and the anecdotes, why not mark your articles with categories and make it possible to view entries by categories?  Does the blogging software have that kind of capability?</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232077</link><pubDate>Tue, 21 Sep 2004 00:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232077</guid><dc:creator>Raymond Chen</dc:creator><description>Um, that's what the category feeds are for.</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232197</link><pubDate>Tue, 21 Sep 2004 03:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232197</guid><dc:creator>name</dc:creator><description>The thing that still bugs me about reading specs from the other side is that it won't always work.  &lt;br&gt;&lt;br&gt;Windows's implementation has to be compatible with buggy applications, and may contain workarounds you won't think of. Or Windows may have bugs or quirks that applications depend on.  Or it may handle details of a correct implementation that aren't obvious in the spec (e.g., ShellExecute expands environment strings).  And when specs change, you may have to track them.&lt;br&gt;&lt;br&gt;Is the strategy of reading a contract from the other side successfully used on a variety of specs in real applications?  If not, why not?  If so, does it cause the implementors endless grief, or what?</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232366</link><pubDate>Tue, 21 Sep 2004 13:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232366</guid><dc:creator>Cooney</dc:creator><description>&amp;gt; Is the strategy of reading a contract from the other side successfully used on a variety of specs in real applications? If not, why not? If so, does it cause the implementors endless grief, or what?&lt;br&gt;&lt;br&gt;Probably not. If it were, it'd be more akin to a standard - implementations are judged by their compliance to a standard, and variations are treated as bugs in the code. &lt;br&gt;&lt;br&gt;Windows is different - it is the defacto standard, and is authoritative, more so than any written spec. Variations between the code and the spec are treated as bugs in the spec (provided that someone somewhere depends on the behavior). &lt;br&gt;&lt;br&gt;I think the best way to view this is to look at the docs as a starting point, and then resolve any questions by testing the code to see what it does (which is how we get bug-dependency in the first place).</description></item><item><title>re: How to host an IContextMenu, part 1 - Initial foray</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#232495</link><pubDate>Tue, 21 Sep 2004 18:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232495</guid><dc:creator>Mike Dunn</dc:creator><description>&amp;gt;Is the strategy of reading a contract from the other side successfully used on a variety of specs in real applications?&lt;br&gt; &lt;br&gt;I imagine that reading the context menu shell extension spec from the other side is done often, since there are many Explorer shell replacements out there, and a file/dir context menu is a pretty big part of the shell.&lt;br&gt;Other apps like WndTabs for VC 6 do it as well (r-click a tab and you can get the Explorer context menu for a source file).</description></item><item><title>Shell Extensibility in Longhorn</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#241700</link><pubDate>Wed, 13 Oct 2004 16:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:241700</guid><dc:creator>notgartner.com: Mitch Denny's Blog</dc:creator><description /></item><item><title>IContextMenu のホスト方法 - Shell</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#558158</link><pubDate>Wed, 22 Mar 2006 20:33:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:558158</guid><dc:creator>社本＠ワック Blog</dc:creator><description>IContextMenu のホスト方法 - Shell</description></item><item><title>Implementing "Sent To Mail Recipient" in your Application &amp;laquo; BlogWell</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#3111111</link><pubDate>Wed, 06 Jun 2007 09:46:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3111111</guid><dc:creator>Implementing "Sent To Mail Recipient" in your Application « BlogWell</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://blogwell.wordpress.com/2007/06/05/implementing-sent-to-mail-recipient-in-your-application/"&gt;http://blogwell.wordpress.com/2007/06/05/implementing-sent-to-mail-recipient-in-your-application/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>BlogWell &amp;raquo; Implementing &amp;#8220;Sent To Mail Recipient&amp;#8221;; in your Application</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/09/20/231739.aspx#7032688</link><pubDate>Wed, 09 Jan 2008 00:11:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7032688</guid><dc:creator>BlogWell » Implementing “Sent To Mail Recipient”; in your Application</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://blog-well.com/2007/06/05/implementing-sent-to-mail-recipient-in-your-application/"&gt;http://blog-well.com/2007/06/05/implementing-sent-to-mail-recipient-in-your-application/&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>