<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Rants of a Hippie Coder</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/hippietim/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/hippietim/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:09:14 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>My team is hiring!</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/my-team-is-hiring</link>
      <pubDate>Thu, 08 May 2008 12:41:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2008/05/08/my-team-is-hiring/</guid>
      <description><![CDATA[We're looking for a strong software developer in the Raleigh/Durham, NC area.&nbsp; The job posting...]]></description>
      <content:encoded><![CDATA[<P>We're looking for a strong software developer in the Raleigh/Durham, NC area.&nbsp; The job posting hasn't propogated out to the public Microsoft career listings web site yet so here's the job description:</P>
<BLOCKQUOTE>
<P>Are you passionate about delivering on the vision of “Connected Entertainment”? Do you dream about having a mobile phone based entertainment experience powered by a compelling entertainment service? If yes, come join our team and build the next generation of entertainment experiences! <BR><BR>Our team is embarking on the mission to create a “Connected Entertainment” experience that spans the PC and devices. To complete this vision, we must ensure that the “Connected Entertainment” experience is available on mobile phones - the most ubiquitous, most personal and most used devices in the world. We are a rapidly growing, V1 product team with great opportunities for motivated individuals! <BR><BR>We are looking for an exceptional Senior Software Design Engineer (SDE) to lead the design and delivery of distributed services in the cloud for our team. You will drive technical product design across a wide set of feature areas and create detailed design specifications. You’ll write scalable, robust, reliable, secure, and high performance server code for our mobile platform. You’ll also work closely with design, PM and test teams to drive execution of these features. <BR><BR>The ideal candidate would meet the following requirements:<BR>- Minimum 6+ years of development experience with proficiency in C#/C++/C with proven skills in design and product architecture<BR>- Experience in building and shipping consumer facing products across multiple product cycles<BR>- Experience building highly scalable distributed server products. <BR>- Experience delivering web services, scalable data stores and related technologies are a strong plus (SQL, WCF, ASP.Net)<BR>- Great problem solving skills and high intellectual horsepower<BR>- Strong passion for media and entertainment <BR>- Excellent written and verbal communication and cross group collaboration skills <BR>- A BA/BS in Computer Science, Engineering and/or equivalent industry experience is preferred</P></BLOCKQUOTE>
<P>If this position interests you please contact <A href="mailto:ncdevjob@microsoft.com">ncdevjob@microsoft.com</A></P>]]></content:encoded>
    </item>
    <item>
      <title>Fix for Reports showing up properly on WSS 2.0 for Team Foundation Server 2008 Beta 2</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/fix-for-reports-showing-up-properly-on-wss-2-0-for-team-foundation-server-2008-beta-2</link>
      <pubDate>Tue, 31 Jul 2007 14:34:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2007/07/31/fix-for-reports-showing-up-properly-on-wss-2-0-for-team-foundation-server-2008-beta-2/</guid>
      <description><![CDATA[If you are experiencing problems with viewing TFS reports on a WSS 2.0 server and the message is...]]></description>
      <content:encoded><![CDATA[<P mce_keep="true">If you are experiencing problems with viewing TFS reports on a WSS 2.0 server and the message is describing a problem about reading the registry key "<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">HKLM\Software\Microsoft\Visual Studio\9.0\TeamFoundation\ReportServer\80\_layouts</SPAN>", then the fix below should address your problem.</FONT></P>
<P mce_keep="true"><FONT size=2>You will need to update tfsredirect.aspx on your WSS 2.0 machine.&nbsp; This file is installed to <SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\LAYOUTS</SPAN>.&nbsp; </FONT></P>
<P mce_keep="true"><FONT size=2>This line:</P></FONT>
<DIV class=codeblock><PRE><P style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: blue">string</SPAN>[] uriPathParts = Request.RawUrl.Split(<SPAN style="COLOR: blue">new </SPAN><SPAN style="COLOR: blue">char</SPAN>[] { <SPAN style="COLOR: #a31515">'/'</SPAN>,<SPAN style="COLOR: #a31515">'\\'</SPAN> }, 2, StringSplitOptions.RemoveEmptyEntries);</SPAN></P></PRE></DIV>
<P mce_keep="true">Must be replaced with these two lines:</P>
<DIV class=codeblock><PRE><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: blue">string</SPAN> uriBasis = Request.Params[<SPAN style="COLOR: #a31515">"HTTP_VTI_SCRIPT_NAME"</SPAN>] ?? Request.RawUrl;</SPAN>
<P style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: blue">string</SPAN>[] uriPathParts = uriBasis.Split(<SPAN style="COLOR: blue">new </SPAN><SPAN style="COLOR: blue">char</SPAN>[] { <SPAN style="COLOR: #a31515">'/'</SPAN>,<SPAN style="COLOR: #a31515">'\\'</SPAN> }, 2, StringSplitOptions.RemoveEmptyEntries);</SPAN></P></PRE></DIV>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2008 Team Foundation Server Beta 2 Has Shipped!!!</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/visual-studio-2008-team-foundation-server-beta-2-has-shipped</link>
      <pubDate>Thu, 26 Jul 2007 17:09:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2007/07/26/visual-studio-2008-team-foundation-server-beta-2-has-shipped/</guid>
      <description><![CDATA[Check it out!&nbsp; https://msdn2.microsoft.com/en-us/vstudio/default.aspx
This is a particularly...]]></description>
      <content:encoded><![CDATA[<P>Check it out!&nbsp; <A href="https://msdn2.microsoft.com/en-us/vstudio/default.aspx">https://msdn2.microsoft.com/en-us/vstudio/default.aspx</A></P>
<P>This is a particularly exciting release for me as I've recently taken over leading the TFS Setup,&nbsp;Admin, and Ops team and we made a number of improvements in deploying and managing TFS servers for Beta 2 including support for SharePoint Farms, running TFS as Network Service, SQL Named Instances, remote SharePoint, Windows Server 2008, WSS 3.0, Client Certificates, port flexibility, Analysis Services flexibility, and more!</P>]]></content:encoded>
    </item>
    <item>
      <title>Workflow for Team Foundation?</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/workflow-for-team-foundation</link>
      <pubDate>Fri, 07 Apr 2006 14:34:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/04/07/workflow-for-team-foundation/</guid>
      <description><![CDATA[We have a number of scenarios we'd like to enable in future releases of Visual Studio Team...]]></description>
      <content:encoded><![CDATA[<P>We have a number of scenarios we'd like to enable in future releases of Visual Studio Team Foundation that would really benefit being part of a generalized workflow framework.&nbsp; Things like code review/checkin processes, build release and staging, etc.&nbsp; And no matter how many scenarios you cover, customers will always come up with more.&nbsp; Building workflow into a system can be hard enough without having to make it extensible too.&nbsp; Fortunately, Microsoft is working on the <A href=" https://msdn.microsoft.com/winfx/reference/workflow/default.aspx">Windows Workflow Foundation</A> as part of WinFX.&nbsp; This looks very promising.&nbsp; One of the folks&nbsp;on the team, <A HREF="/markhsch/">Mark Schmidt</A>,&nbsp;has written an <A HREF="/markhsch/archive/2006/03/02/542596.aspx">authoring tool </A>that looks interesting.</P>
<P>A company I worked for many years ago developed a huge workflow system for OS/2 and Unix so I've always been intrigued by this stuff.&nbsp; It was ginormous and had all sorts of memory limits, usability was poor (it used lots of non-modal windows - and I mean lots), and everything was so darned generic that as a user you really had too much of the implementation exposed to you.&nbsp; The problem is that it was a generalized engine that wasn't really a proper&nbsp;API that had a GUI slapped on top of it.&nbsp; When what you really want is an engine that manages the flows and allows you to build a tailored customer experience that is relevant for your scenarios.</P>
<P>Stay tuned...</P>]]></content:encoded>
    </item>
    <item>
      <title>Will Code For Food</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/will-code-for-food</link>
      <pubDate>Wed, 29 Mar 2006 11:20:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/03/29/will-code-for-food/</guid>
      <description><![CDATA[This article originally appeared in the Wall Street Journal several years ago.&nbsp; It's come up...]]></description>
      <content:encoded><![CDATA[<P>This article originally appeared in the Wall Street Journal several years ago.&nbsp; It's come up from time to time at work and most folks find it to be an amusing tale so I figured I'd post this before I lose track of it.</P>
<blockquote><P>In these dark days of dot-com despair, Web developer Brian Yangas never thought a practical joke would yield three job leads in an hour.<BR>&nbsp;<BR>Recently Patrick Husting, eHome Inc.'s chief technology officer and co-founder, told Mr. Yangas and 30 of his co-workers at the company's Bellevue, Wash., tech office that the online real-estate brokerage would shut all of its 11 regional sales offices and lay off the employees there.</P>
<P>Only the tech office would remain open while eHome tried to sell its technology. But the company might run out of money, so Mr. Husting suggested the employees be prepared and start looking for other work.</P>
<P>Mr. Yangas, a self-described "quirky guy," didn't fix up his resume; he fixed up a cardboard sign. It read "Web Developer...dot-com went bust...will code for food (or options)...hungry -- sober."</P>
<P>He arrived at work at 8:30 the next morning, bundled against the November chill in a hardy brown twill jacket and baseball cap. Sign in hand, he strolled out to the nearby highway-exit ramp and waited to make his co-workers laugh as they arrived. Mr. Yangas, 31, hoped his joke would "relieve the anxiety," he says. "You know, lighten the mood."</P>
<P>For the first 10 minutes, passing drivers essentially ignored the avid foosball player. Then some of the commuters, most of whom he didn't recognize, "started to notice and laugh, so I thought I'd stay a bit longer," he says.</P>
<P>A man driving "maybe a Toyota" shouted "Cogenix is hiring!" Mr. Yangas recalls. Cogenix is a database-application and Web site maker based in nearby Redmond, Wash. About five minutes later, Cami Cole, an associate with information-technology recruiter Maxim Group, stopped and asked "Are you really a Web developer?" Mr. Yangas nodded, and Ms. Cole handed him a business card with the parting words, "I can get you a job."</P>
<P>After about 45 minutes, Mr. Yangas went inside to warm up. He came back out at 10am because his boss wanted a picture of the prank. While Mr. Yangas was waiting for Mr. Husting to find a camera, "a long-haired guy in a blue truck" yelled, "Go to Microsoft campus building D. Ask for Tim."</P>
<P>"I wasn't sure what to think about it at first," Mr. Yangas remembers, "but later that day, no one was doing any work," so he headed down to the Microsoft campus. "I thought, it's been a weird day so far; let's see what fate brings."</P>
<P>He found the D building on Microsoft's Red West campus. It was three or four stories high and Mr. Yangas, who had caught only a fleeting glimpse of his contact, worried he wouldn't find the right Tim.</P>
<P>But he did. With the help of a new receptionist who didn't know a soul in the building but did have access to a photo database of employees, Mr. Yangas located what he thought might be the right extension.</P>
<P>The receptionist called: "There's this guy down here who said you yelled to him on the street." Tim Noonan, a development manager for Microsoft's MSN Explorer group, came down to meet Mr. Yangas, took him back to his office and talked to him for 15 to 20 minutes before passing him on to other members of Mr. Noonan's team.</P>
<P>"We're always looking for good developers, so why not" talk with Mr. Yangas, Mr. Noonan says. "And if he's as good a developer as he is at coming up with this scheme then woo-hoo! We value creativity."</P>
<P>Mr. Yangas "was pretty excited" about the outcome: Mr. Noonan called him back for a second, formal interview a few weeks later. And yet another rolled around a week later. Among other things, he was asked to write code on a dry-erase board and was interviewed during lunch to see if he could answer tough questions while eating. The interview lasted nine hours.</P>
<P>Thursday brought good news. A human-resources representative called to say the company would be making him a job offer early in the new year, once "the numbers guy comes back from vacation."</P>
<P>Meanwhile, eHome hasn't shut down. Since the pre-Thanksgiving meeting, Mr. Yangas's current employer has decided to reposition itself as a technology company. EHome's Web site is up and running, the company is referring leads to former agents and receiving referral fees.</P>
<P>So Mr. Yangas, who has two kids and is paying off a home mortgage and a minivan, says he hasn't "gone back out" with his sign. He was encouraged by the job leads, he says, but, in fact, "I was actually kind of hoping for money."</P></blockquote>]]></content:encoded>
    </item>
    <item>
      <title>How to get the active Team Foundation Server and Project from an Add-In</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/how-to-get-the-active-team-foundation-server-and-project-from-an-add-in</link>
      <pubDate>Wed, 29 Mar 2006 10:16:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/03/29/how-to-get-the-active-team-foundation-server-and-project-from-an-add-in/</guid>
      <description><![CDATA[Ed Hintz posted "How to Write a Team Foundation Version Control Add-in for Visual Studio"&nbsp;which...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana size=2>Ed Hintz posted </FONT><A href="/edhintz/archive/2006/02/03/524312.aspx"><FONT face=Verdana size=2>"How to Write a Team Foundation Version Control Add-in for Visual Studio"</FONT></A><FONT face=Verdana size=2>&nbsp;which is a great guide to writing an add-in to integrate with Team Foundation version control.&nbsp; I won't repeat that info her.&nbsp; If you want to do something that is related to the active Team Server and/or Project from within a VS Add-In or VSIP package then read on.</FONT></P>
<P><FONT face=Verdana size=2>First make sure you have a reference to Microsoft.VisualStudio.TeamFoundation - either follow Ed's steps to add them via the REG.EXE commands for convenience or load them using the Browse tab on the Add Reference dialog - in a default installation the assembly will be in "%programfiles%\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies".</FONT></P>
<P><FONT face=Verdana size=2>Next add a using clause:</FONT></P>
<P><PRE class="codesnip"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> Microsoft.VisualStudio.TeamFoundation;</SPAN></PRE>
<P></P>
<P><FONT face=Verdana size=2>Create a member variable in your <FONT face="Courier New" color=#008080 size=2>Connect</FONT>&nbsp;class for the <FONT face="Courier New">TeamFoundationServerExt</FONT> object:</FONT></P>
<PRE class="codesnip"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">private</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> <SPAN style="COLOR: teal">TeamFoundationServerExt</SPAN> _tfsExt;</SPAN> </PRE>
<P><FONT face=Verdana size=2>In your <FONT size=2>OnConnection</FONT>&nbsp;method, initialize the <FONT face="Courier New">_tfsExt</FONT> object:</FONT></P>
<P><PRE class="codesnip"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">_tfsExt = _applicationObject.GetObject(<SPAN style="COLOR: maroon">"Microsoft.VisualStudio.TeamFoundation.TeamFoundationServerExt"</SPAN>) <SPAN style="COLOR: blue">as</SPAN> <SPAN style="COLOR: teal">TeamFoundationServerExt</SPAN>;</SPAN></PRE>
<P></P>
<P><FONT face=Verdana size=2>The&nbsp;<SPAN style="COLOR: teal"><FONT face="Courier New"><FONT color=#000000>TeamFoundationServerExt </FONT></FONT></SPAN>object exposes two things:</FONT></P><FONT face=Verdana size=2><FONT size=2>
<OL>
<LI><FONT face="Courier New">ActiveProjectContext</FONT> - a </FONT>property of type <FONT color=#008080 size=2><FONT face="Courier New" color=#000000>ProjectContextExt</FONT> </FONT>which contains the active server and project</FONT><FONT face=Verdana size=2><FONT size=2> 
<LI><FONT face="Courier New">ProjectContextChanged</FONT> - an </FONT>event which is fired when the current project and/or server is changed</FONT><FONT face=Verdana size=2></FONT></LI></OL>
<P><PRE class="codesnip"><FONT face=Verdana size=2><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> <SPAN style="COLOR: blue">sealed</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: teal">ProjectContextExt</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">string</SPAN> DomainName { <SPAN style="COLOR: blue">get</SPAN>; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">string</SPAN> DomainUri { <SPAN style="COLOR: blue">get</SPAN>; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">string</SPAN> ProjectName { <SPAN style="COLOR: blue">get</SPAN>; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">string</SPAN> ProjectUri { <SPAN style="COLOR: blue">get</SPAN>; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN><BR></PRE>
<P></P>
<P><FONT face="Courier New">DomainName</FONT> is the&nbsp;display name of the current server and <FONT face="Courier New">DomainUri</FONT> is the actual URI of the current server.&nbsp; And <FONT face="Courier New">ProjectName</FONT> is the display name of the current server and <FONT face="Courier New">ProjectUri</FONT> is the Team Project URI.&nbsp; Note that these values can be null if there is no active server or project.</P>
<P>Your ProjectContextChanged handler should look like this:</P>
<PRE class="codesnip"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">void</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> _tfsExt_ProjectContextChanged(<SPAN style="COLOR: blue">object</SPAN> sender, <SPAN style="COLOR: teal">EventArgs</SPAN> e)<BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{<BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN></PRE>
<P>Within your handler you requery the <FONT face="Courier New">ActiveProjectContext</FONT> property of the <FONT face="Courier New">TeamFoundationServerExt</FONT> object.</P>
<P></FONT>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>The best thing you can get for your iPod</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/the-best-thing-you-can-get-for-your-ipod</link>
      <pubDate>Tue, 28 Mar 2006 13:48:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/03/28/the-best-thing-you-can-get-for-your-ipod/</guid>
      <description><![CDATA[The Bose SoundDock.&nbsp; Really.&nbsp; It is way cool.&nbsp; It is way expensive too but given the...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana size=2>The </FONT><A href="https://www.bose.com/controller?event=VIEW_PRODUCT_PAGE_EVENT&amp;product=sounddock_multimedia_index&amp;ck=0"><FONT face=Verdana size=2>Bose SoundDock</FONT></A><FONT face=Verdana size=2>.&nbsp; Really.&nbsp; It is way cool.&nbsp; It is way expensive too but given the simplicity, elegance, and sound quality it is well worth it.&nbsp; Too many iPod docking units have subwoofers, separate speakers, lots of switches, look clunky, etc.</FONT></P>
<P><FONT face=Verdana size=2>When I&nbsp;told my wife I was going to put a stereo in our living room that she had meticulously decorated she gave me a very skeptical look.&nbsp; Then I brought the SoundDock home and she liked it pretty much from the get go - "you mean I just plug my iPod in and that's it?"&nbsp; Yep.&nbsp; And it charges the iPod as well so I/she can just grab it and go.&nbsp; Since we got it we've had a lot of guests and pretty much everyone is amazed at the sound produced by that little gizmo.&nbsp; I'm sure&nbsp;we've inspired a few iPod and Bose purchases.&nbsp; The downside is that the SoundDock isn't very versatile - it just works with the iPod and that's it.</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Flashing Dialogboxes</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/flashing-dialogboxes</link>
      <pubDate>Tue, 28 Mar 2006 11:22:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/03/28/flashing-dialogboxes/</guid>
      <description><![CDATA[This example demonstrates how to flash a dialog in the taskbar after performing a long running...]]></description>
      <content:encoded><![CDATA[<P>This example demonstrates how to flash a dialog in the taskbar after performing a long running operation from the command line.&nbsp; A good&nbsp;example of how this is useful is in the VS Team Foundation version control toolset.&nbsp; Naturally, it includes a command line utility (TF.EXE) to perform source control operations.&nbsp; Sometimes these operations can be very lengthy and in the end result in a dialog box popping up - performing a lengthy GET operation that results in conflicts to resolve is a good example of when this would happen.</P>
<P>Our own UI framework does quite a bit more than this - this is just a scaled down example of what happens when a dialog is invoked from the command line.&nbsp; Many of our dialogs end up getting displayed in Visual Studio, standalone Windows apps, Excel, the command line, etc.&nbsp; So in our framework the method to show a modal dialog is actually virtual so the appropriate thing happens in each environment.</P>
<DIV class=codeblock><PRE>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Diagnostics;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Text;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Windows.Forms;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Runtime.InteropServices;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Threading;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">namespace</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> ConsoleFlasher</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: teal">Program</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> Main(<SPAN style="COLOR: blue">string</SPAN>[] args)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">Thread</SPAN>.Sleep(5000); <SPAN style="COLOR: green">//&nbsp; Lengthy operation... </SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">using</SPAN> (<SPAN style="COLOR: teal">MyForm</SPAN> form = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">MyForm</SPAN>())</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">UIHost</SPAN>.ShowModalDialog(form);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: teal">UIHost</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">DialogResult</SPAN> ShowModalDialog(<SPAN style="COLOR: teal">Form</SPAN> form)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> ShowModalDialog(form, <SPAN style="COLOR: blue">null</SPAN>);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//********************************************************************************************</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Display a modal dialog a windows application.</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;param name="form"&gt;</SPAN><SPAN style="COLOR: green">The form to display.</SPAN><SPAN style="COLOR: gray">&lt;/param&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;param name="parent"&gt;</SPAN><SPAN style="COLOR: green">The parent window for window stack ordering.</SPAN><SPAN style="COLOR: gray">&lt;/param&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//********************************************************************************************</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">DialogResult</SPAN> ShowModalDialog(<SPAN style="COLOR: teal">Form</SPAN> form, <SPAN style="COLOR: teal">IWin32Window</SPAN> parent)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">bool</SPAN> isTopLevel = parent == <SPAN style="COLOR: blue">null</SPAN>;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.ShowInTaskbar = isTopLevel;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;form.MinimizeBox = isTopLevel;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.ShowIcon = isTopLevel;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (isTopLevel)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; Attach an event handler so maybe we'll flash the title in the taskbar</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.Activated += <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">EventHandler</SPAN>(OnModalDialogFormActivate);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; This is where you would also set your app icon on the dialog as well.</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">DialogResult</SPAN> result = form.ShowDialog(parent);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (isTopLevel)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.Activated -= <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">EventHandler</SPAN>(OnModalDialogFormActivate);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> result;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//********************************************************************************************</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> On form activate for a modal dialog for the console.&nbsp; We check to see if we are the </SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> foreground window and flash the taskbar if we aren't.</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;param name="sender"&gt;</SPAN><SPAN style="COLOR: green">Form to activate</SPAN><SPAN style="COLOR: gray">&lt;/param&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;param name="e"&gt;</SPAN><SPAN style="COLOR: green">Standard event args</SPAN><SPAN style="COLOR: gray">&lt;/param&gt;</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//********************************************************************************************</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">void</SPAN> OnModalDialogFormActivate(<SPAN style="COLOR: blue">object</SPAN> sender, <SPAN style="COLOR: teal">EventArgs</SPAN> e)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: teal">Form</SPAN> form = sender <SPAN style="COLOR: blue">as</SPAN> <SPAN style="COLOR: teal">Form</SPAN>;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (form != <SPAN style="COLOR: blue">null</SPAN>)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">Debug</SPAN>.Assert(form.Visible, <SPAN style="COLOR: maroon">"Form should already be visible for FormActivate"</SPAN>);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">IntPtr</SPAN> foregroundHwnd = <SPAN style="COLOR: teal">NativeMethods</SPAN>.GetForegroundWindow();</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; First see if we're in the foreground</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (foregroundHwnd != form.Handle)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">IntPtr</SPAN> consoleHwnd = <SPAN style="COLOR: teal">NativeMethods</SPAN>.GetConsoleWindow();</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; We're not in the foreground so let's see if our console is.</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">if</SPAN> (foregroundHwnd != consoleHwnd)</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; We're not in the foreground and neither is our console window so let's</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: green">//&nbsp; flash the user.</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">int</SPAN> flashCount = 1;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; make sure we read the count from the system and respect this for accessibility</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">NativeMethods</SPAN>.SystemParametersInfo(<SPAN style="COLOR: teal">NativeMethods</SPAN>.SPI_GETFOREGROUNDFLASHCOUNT, 0, <SPAN style="COLOR: blue">ref</SPAN> flashCount, 0);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">NativeMethods</SPAN>.<SPAN style="COLOR: teal">FLASHWINFO</SPAN> fwi = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">NativeMethods</SPAN>.<SPAN style="COLOR: teal">FLASHWINFO</SPAN>();</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fwi.cbSize = (<SPAN style="COLOR: teal">UInt32</SPAN>)<SPAN style="COLOR: teal">Marshal</SPAN>.SizeOf(<SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: teal">NativeMethods</SPAN>.<SPAN style="COLOR: teal">FLASHWINFO</SPAN>));</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;fwi.dwFlags = <SPAN style="COLOR: teal">NativeMethods</SPAN>.FLASHW_ALL;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fwi.dwTimeout = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; This will get the system default which is the caret blink rate</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fwi.uCount = (<SPAN style="COLOR: teal">UInt32</SPAN>)flashCount;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fwi.hwnd = form.Handle;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; blinky, blinky, blinky</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">NativeMethods</SPAN>.FlashWindowEx(<SPAN style="COLOR: blue">ref</SPAN> fwi);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">else</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; Our console has the input focus so let's be a bit more agressive...</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">NativeMethods</SPAN>.SetForegroundWindow(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">HandleRef</SPAN>(form, form.Handle));</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">//&nbsp; Don't call us again...</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.Activated -= <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">EventHandler</SPAN>(OnModalDialogFormActivate);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">else</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: teal">Debug</SPAN>.Fail(<SPAN style="COLOR: maroon">"Invalid sender in OnModalDialogFormLoad"</SPAN>);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: teal">NativeMethods</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> SPI_GETFOREGROUNDFLASHCOUNT = 0x2004;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> FLASHW_STOP = 0;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> FLASHW_CAPTION = 0x00000001;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> FLASHW_TRAY = 0x00000002;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> FLASHW_ALL = (FLASHW_CAPTION | FLASHW_TRAY);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> FLASHW_TIMER = 0x00000004;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">int</SPAN> FLASHW_TIMERNOFG = 0x0000000C;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<SPAN style="COLOR: teal">StructLayout</SPAN>(<SPAN style="COLOR: teal">LayoutKind</SPAN>.Sequential)]</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">struct</SPAN> <SPAN style="COLOR: teal">FLASHWINFO</SPAN></SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">UInt32</SPAN> cbSize;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">IntPtr</SPAN> hwnd;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">UInt32</SPAN> dwFlags;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">UInt32</SPAN> uCount;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: teal">UInt32</SPAN> dwTimeout;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<SPAN style="COLOR: teal">DllImport</SPAN>(<SPAN style="COLOR: maroon">"user32"</SPAN>, SetLastError = <SPAN style="COLOR: blue">true</SPAN>, CharSet = <SPAN style="COLOR: teal">CharSet</SPAN>.Auto, BestFitMapping = <SPAN style="COLOR: blue">false</SPAN>)]</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">extern</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">int</SPAN> FlashWindowEx(<SPAN style="COLOR: blue">ref</SPAN> <SPAN style="COLOR: teal">FLASHWINFO</SPAN> fwi);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<SPAN style="COLOR: teal">DllImport</SPAN>(<SPAN style="COLOR: maroon">"user32"</SPAN>, CharSet = <SPAN style="COLOR: teal">CharSet</SPAN>.Auto)]</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">extern</SPAN> <SPAN style="COLOR: blue">bool</SPAN> SystemParametersInfo(<SPAN style="COLOR: blue">int</SPAN> nAction, <SPAN style="COLOR: blue">int</SPAN> nParam, <SPAN style="COLOR: blue">ref</SPAN> <SPAN style="COLOR: blue">int</SPAN> value, <SPAN style="COLOR: blue">int</SPAN> ignore);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<SPAN style="COLOR: teal">DllImport</SPAN>(<SPAN style="COLOR: maroon">"user32"</SPAN>, SetLastError = <SPAN style="COLOR: blue">true</SPAN>, CharSet = <SPAN style="COLOR: teal">CharSet</SPAN>.Auto, BestFitMapping = <SPAN style="COLOR: blue">false</SPAN>)]</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">extern</SPAN> <SPAN style="COLOR: teal">IntPtr</SPAN> SetForegroundWindow(<SPAN style="COLOR: teal">HandleRef</SPAN> hwnd);</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<SPAN style="COLOR: teal">DllImport</SPAN>(<SPAN style="COLOR: maroon">"user32"</SPAN>, SetLastError = <SPAN style="COLOR: blue">true</SPAN>, CharSet = <SPAN style="COLOR: teal">CharSet</SPAN>.Auto, BestFitMapping = <SPAN style="COLOR: blue">false</SPAN>)]</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">extern</SPAN> <SPAN style="COLOR: teal">IntPtr</SPAN> GetForegroundWindow();</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<SPAN style="COLOR: teal">DllImport</SPAN>(<SPAN style="COLOR: maroon">"kernel32"</SPAN>, SetLastError = <SPAN style="COLOR: blue">true</SPAN>, CharSet = <SPAN style="COLOR: teal">CharSet</SPAN>.Auto, BestFitMapping = <SPAN style="COLOR: blue">false</SPAN>)]</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">extern</SPAN> <SPAN style="COLOR: teal">IntPtr</SPAN> GetConsoleWindow();&nbsp;</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp; &nbsp;&nbsp;}</SPAN><BR>&nbsp;<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN><BR></PRE></DIV>]]></content:encoded>
    </item>
    <item>
      <title>Robin Trower is touring the US again!!!</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/robin-trower-is-touring-the-us-again</link>
      <pubDate>Mon, 27 Mar 2006 16:55:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/03/27/robin-trower-is-touring-the-us-again/</guid>
      <description><![CDATA[I'm a huge Robin Trower fan but haven't seen him live in many years mostly because he hasn't toured...]]></description>
      <content:encoded><![CDATA[<FONT face=Verdana size=2>I'm a huge </FONT><A href="https://www.trowerpower.com/"><FONT face=Verdana size=2>Robin Trower</FONT></A><FONT face=Verdana size=2> fan but haven't seen him live in many years mostly because he hasn't toured the US in many years and when he was touring he didn't come near where I was living.&nbsp; I was about to book a flight to England just to see him again so I went to check the tour schedule this weekend and saw that he's added </FONT><A href="https://www.trowerpower.com/html/trower_us_2006_cal.html"><FONT face=Verdana size=2>US tour dates this year</FONT></A><FONT face=Verdana size=2>.&nbsp; I am beyond excited.&nbsp; I will try and catch at least 2 or 3 shows.</FONT>]]></content:encoded>
    </item>
    <item>
      <title>Overcoming a .NET ListView CheckBoxes quirk</title>
      <link>https://docs.microsoft.com/archive/blogs/hippietim/overcoming-a-net-listview-checkboxes-quirk</link>
      <pubDate>Mon, 27 Mar 2006 15:10:00 GMT</pubDate>
      <dc:creator><![CDATA[hippietim]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/hippietim/2006/03/27/overcoming-a-net-listview-checkboxes-quirk/</guid>
      <description><![CDATA[In the Visual Studio Team Foundation version control UI, we display your pending changes in a...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana size=2>In the Visual Studio Team Foundation version control UI, we display your pending changes in a ListView control.&nbsp; That ListView has CheckeBoxes set to true as we allow you to perform a variety of operations on the checked items.&nbsp; </FONT></P>
<P><FONT face=Verdana size=2>At the same time we want you to be able to double click on an item in the list and have the file open in the editor.&nbsp; </FONT></P>
<P><FONT face=Verdana size=2>Unfortunately, the .NET ListView component automatically toggles the checked state of items when you double click on them.&nbsp; I know that this is not the behavior of the underlying Win32 ListView control so it has to be something in the WinForms code.</FONT></P>
<P><FONT face=Verdana size=2>At this point it's worth examing how this all works.&nbsp; In a traditional C/C++ application, the ListView control sends WM_NOTIFY messages to the window that is the parent of the ListView.&nbsp; This is typically a dialog box window.&nbsp; In WinForms, events are exposed directly from the controls themselves.&nbsp; So internally WinForms will take the WM_NOTIFY message and reflect it back to the child control and then the child control handles the message by firing events that you add your event handlers too.&nbsp; This happens for other messages besides WM_NOTIFY - such as WM_COMMAND.</FONT></P>
<P><FONT face=Verdana size=2>A few minutes with a program such as Spy++ will show you the message traffic.&nbsp; When you double click a ListView item the underlying Win32 ListView sends a WM_NOTIFY message to the parent window (typically your Form).&nbsp; The WinForms message handler for the parent window then reroutes the message back to the ListView by sending it a new message - WM_REFLECT + WM_NOTIFY.&nbsp; The WinForms ListView message handler then dispatches it.&nbsp; When the WinForms ListView sees a NM_DBLCLK notification it then sends a message (LVM_HITTEST) to the Win32 ListView control asking where the click occurred.&nbsp; If it was on an item, the WinForms ListView code will then toggle the checked state of the item.</FONT></P>
<P><FONT face=Verdana size=2>Since none of this behavior is exposed via the properties of the ListView control we'll have to work around it using less convenient means.&nbsp; The solution I came up with for Team Foundation was to set a flag during the NM_DBLCLK notification that we're in the midst of a double click notification and then we intercept the LVM_HITTEST call and return that no item was found.</FONT></P>
<DIV class="codeblock"><PRE><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.ComponentModel;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Runtime.InteropServices;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Security.Permissions;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">using</SPAN><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> System.Windows.Forms;</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">namespace</SPAN><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> ListViewCheckBoxes</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">class</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">MyListView</SPAN><FONT color=#000000> : </FONT><SPAN style="COLOR: teal">ListView</SPAN></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">private</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">bool</SPAN><FONT color=#000000> m_doubleClickDoesCheck = </FONT><SPAN style="COLOR: blue">true</SPAN><FONT color=#000000>;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; maintain the default behavior</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">private</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">bool</SPAN><FONT color=#000000> m_inDoubleClickCheckHack = </FONT><SPAN style="COLOR: blue">false</SPAN><FONT color=#000000>;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//****************************************************************************************</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">// This function helps us overcome the problem with the managed listview wrapper wanting</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">// to turn double-clicks on checklist items into checkbox clicks.&nbsp; We count on the fact</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">// that the base handler for NM_DBLCLK will send a hit test request back at us right away.</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">// So we set a special flag to return a bogus hit test result in that case.</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//****************************************************************************************</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">private</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">unsafe</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> OnWmReflectNotify(</FONT><SPAN style="COLOR: blue">ref</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">Message</SPAN><FONT color=#000000> m)</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (!DoubleClickDoesCheck &amp;&amp; CheckBoxes)</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: teal">NativeMethods</SPAN><FONT color=#000000>.</FONT><SPAN style="COLOR: teal">NMHDR</SPAN><FONT color=#000000>* nmhdr = (</FONT><SPAN style="COLOR: teal">NativeMethods</SPAN><FONT color=#000000>.</FONT><SPAN style="COLOR: teal">NMHDR</SPAN><FONT color=#000000> *)m.LParam;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (nmhdr-&gt;code == </FONT><SPAN style="COLOR: teal">NativeMethods</SPAN><FONT color=#000000>.NM_DBLCLK)</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_inDoubleClickCheckHack = </FONT><SPAN style="COLOR: blue">true</SPAN><FONT color=#000000>;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [</FONT><SPAN style="COLOR: teal">SecurityPermission</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: teal">SecurityAction</SPAN><FONT color=#000000>.LinkDemand, Flags = </FONT><SPAN style="COLOR: teal">SecurityPermissionFlag</SPAN><FONT color=#000000>.UnmanagedCode)]</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">protected</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">override</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> WndProc(</FONT><SPAN style="COLOR: blue">ref</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">Message</SPAN><FONT color=#000000> m)</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">switch</SPAN><FONT color=#000000> (m.Msg)</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; This code is to hack around the fact that the managed listview</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; wrapper translates double clicks into checks without giving the </SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; host to participate.</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; See OnWmReflectNotify() for more details.</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">case</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">NativeMethods</SPAN><FONT color=#000000>.WM_REFLECT + </FONT><SPAN style="COLOR: teal">NativeMethods</SPAN><FONT color=#000000>.WM_NOTIFY:</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OnWmReflectNotify(</FONT><SPAN style="COLOR: blue">ref</SPAN><FONT color=#000000> m);</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">break</SPAN><FONT color=#000000>;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; This code checks to see if we have entered our hack check for</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; double clicking items in check lists.&nbsp; During the NM_DBLCLK</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; processing, the managed handler will send a hit test message</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; to see which item to check.&nbsp; Returning -1 will convince that</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; code not to proceed.</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">case</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">NativeMethods</SPAN><FONT color=#000000>.LVM_HITTEST:</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (m_inDoubleClickCheckHack)</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_inDoubleClickCheckHack = </FONT><SPAN style="COLOR: blue">false</SPAN><FONT color=#000000>;</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.Result = (System.</FONT><SPAN style="COLOR: teal">IntPtr</SPAN><FONT color=#000000>)(-1);</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">return</SPAN><FONT color=#000000>;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">break</SPAN><FONT color=#000000>;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">base</SPAN><FONT color=#000000>.WndProc(</FONT><SPAN style="COLOR: blue">ref</SPAN><FONT color=#000000> m);</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [</FONT><SPAN style="COLOR: teal">Browsable</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: blue">true</SPAN><FONT color=#000000>), </FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: teal">Description</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: maroon">"When CheckBoxes is true, this controls whether or not double clicking will toggle the check."</SPAN><FONT color=#000000>), </FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: teal">Category</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: maroon">"My Controls"</SPAN><FONT color=#000000>),</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: teal">DefaultValue</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: blue">true</SPAN><FONT color=#000000>)]</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">bool</SPAN><FONT color=#000000> DoubleClickDoesCheck</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">get</SPAN></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</FONT><SPAN style="COLOR: blue">return</SPAN><FONT color=#000000> m_doubleClickDoesCheck;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">set</SPAN></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_doubleClickDoesCheck = </FONT><SPAN style="COLOR: blue">value</SPAN><FONT color=#000000>;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//****************************************************************************************</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; This is stuff you would normally put in a separate file with all the other interop</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//&nbsp; you have to work with.</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: green">//****************************************************************************************</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">class</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">NativeMethods</SPAN></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">const</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">int</SPAN><FONT color=#000000> WM_USER = 0x0400;</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">const</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">int</SPAN><FONT color=#000000> WM_REFLECT = WM_USER + 0x1C00;</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">const</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">int</SPAN><FONT color=#000000> WM_NOTIFY = 0x004E;</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">const</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">int</SPAN><FONT color=#000000> LVM_HITTEST = (0x1000 + 18);</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">const</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">int</SPAN><FONT color=#000000> NM_DBLCLK = (-3);</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [</FONT><SPAN style="COLOR: teal">StructLayout</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: teal">LayoutKind</SPAN><FONT color=#000000>.Sequential)]</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">struct</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">NMHDR</SPAN></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR></FONT><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">IntPtr</SPAN><FONT color=#000000> hwndFrom;</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: teal">UIntPtr</SPAN><FONT color=#000000> idFrom;</FONT></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">int</SPAN><FONT color=#000000> code;</FONT></SPAN><BR><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN><BR><FONT size=3>&nbsp;</FONT></FONT><BR></SPAN>&nbsp;<BR>
</PRE></DIV>]]></content:encoded>
    </item>
  </channel>
</rss>