<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>RandomChaos</title><link>http://xna-uk.net/blogs/randomchaos/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/xna-uk/RandomChaos" /><feedburner:info uri="xna-uk/randomchaos" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>MVP 2010 Summit</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/kxZpPGMeTzw/mvp-2010-summit.aspx</link><pubDate>Tue, 02 Mar 2010 15:41:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3085</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3085</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/03/02/mvp-2010-summit.aspx#comments</comments><description>&lt;p&gt;Well, what a great week I had a the summit, as ever, can’t tell you much about it due to our NDA’s but here are some pics from my time there, I have also pinched some pics from other MVP’s (well &lt;a href="http://www.exdream.com/Blog/"&gt;Benjamin’s&lt;/a&gt; pics :P)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021617.39.12_4A622731.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-16 17.39.12" border="0" alt="2010-02-16 17.39.12" src="http://xna-uk.net/blogs/randomchaos/2010021617.39.12_thumb_14E9650C.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Bellevue was really nice, quite, but nice.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021617.39.23_22BBAB07.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-16 17.39.23" border="0" alt="2010-02-16 17.39.23" src="http://xna-uk.net/blogs/randomchaos/2010021617.39.23_thumb_6285918C.jpg" width="184" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;My room mate &lt;a href="https://mvp.support.microsoft.com/profile=24D506E8-DC77-4A74-95B1-C21AD7E2B502"&gt;Vicente Cartas Espinel&lt;/a&gt;, was great to meet you Vicente, you were a great roomie :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021702.23.40_7057D787.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-17 02.23.40" border="0" alt="2010-02-17 02.23.40" src="http://xna-uk.net/blogs/randomchaos/2010021702.23.40_thumb_342C0BDF.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Andy “Z_Man” Dunn and Michael Cummings, just off to the left is Catalin Zima. It was so cool to meet so many XNA community legends, I was quite awestruck I think.. o.O&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021702.23.49_41FE51DA.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-17 02.23.49" border="0" alt="2010-02-17 02.23.49" src="http://xna-uk.net/blogs/randomchaos/2010021702.23.49_thumb_2FB58B18.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Phil Bourke and Vicente in deep conversation, &lt;a href="https://mvp.support.microsoft.com/profile/Benjamin"&gt;Benjamin Nitschke&lt;/a&gt; is to the right.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021704.30.33_7AA8FBE7.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-17 04.30.33" border="0" alt="2010-02-17 04.30.33" src="http://xna-uk.net/blogs/randomchaos/2010021704.30.33_thumb_087B41E3.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;MVP’s, beer and XNA talk, a great combination! (well till the morning I found..)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021706.25.44_2F495823.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-17 06.25.44" border="0" alt="2010-02-17 06.25.44" src="http://xna-uk.net/blogs/randomchaos/2010021706.25.44_thumb_13389938.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No idea what Andy was conveying here, I may have had one too many by this time..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021719.36.51_67F40230.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-17 19.36.51" border="0" alt="2010-02-17 19.36.51" src="http://xna-uk.net/blogs/randomchaos/2010021719.36.51_thumb_399A7C83.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Onto the serious stuff, day 1 of XNA bits..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021803.50.36_2E04BF44.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-18 03.50.36" border="0" alt="2010-02-18 03.50.36" src="http://xna-uk.net/blogs/randomchaos/2010021803.50.36_thumb_71D8F39B.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Some RockBand madness.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021900.56.52_7FAB3996.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-19 00.56.52" border="0" alt="2010-02-19 00.56.52" src="http://xna-uk.net/blogs/randomchaos/2010021900.56.52_thumb_4D476617.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Got to meet the XNA Team too, I am truly awestruck now…!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/2010021901.45.08_5F23F9E4.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="2010-02-19 01.45.08" border="0" alt="2010-02-19 01.45.08" src="http://xna-uk.net/blogs/randomchaos/2010021901.45.08_thumb_4CDB3322.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Back to the hotel (this was the view from our window), before off out again.&lt;/p&gt;  &lt;p&gt;Next set of pictures are Benjamin’s, can you tell I have had a drink?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/BenjaminsPics1_7ED2D3AC.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="BenjaminsPics1" border="0" alt="BenjaminsPics1" src="http://xna-uk.net/blogs/randomchaos/BenjaminsPics1_thumb_6C8A0CEA.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I may have had a pint or so…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/BenjaminsPics5_7E66A0B7.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="BenjaminsPics5" border="0" alt="BenjaminsPics5" src="http://xna-uk.net/blogs/randomchaos/BenjaminsPics5_thumb_0FD70190.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yep, had a few we did….&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/BenjaminsPics3_64926A88.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="BenjaminsPics3" border="0" alt="BenjaminsPics3" src="http://xna-uk.net/blogs/randomchaos/BenjaminsPics3_thumb_64263793.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Packing up our stuff, last day of XNA stuff…sad day..&lt;/p&gt;  &lt;p&gt;I then got to wander around Seattle before I went home, here are a few pics I took..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/DSC00016_440B2AD6.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="DSC00016" border="0" alt="DSC00016" src="http://xna-uk.net/blogs/randomchaos/DSC00016_thumb_4ABE3459.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="http://xna-uk.net/blogs/randomchaos/DSC00021_2AA3279C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="DSC00021" border="0" alt="DSC00021" src="http://xna-uk.net/blogs/randomchaos/DSC00021_thumb_2383EB24.jpg" width="184" height="244" /&gt;&lt;/a&gt; &lt;a href="http://xna-uk.net/blogs/randomchaos/DSC00026_634DD1A9.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="DSC00026" border="0" alt="DSC00026" src="http://xna-uk.net/blogs/randomchaos/DSC00026_thumb_19031704.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;All in all I think we all had a great time, I would like to say thanks to the MVP program for looking after us, the XNA Team for all there effort, both on the day’s and the work they must have had to do in the build up. And also to Andy Dunn, for letting me crash at his house for a couple of nights. Thanks all :D&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3085" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/kxZpPGMeTzw" height="1" width="1"/&gt;</description><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/03/02/mvp-2010-summit.aspx</feedburner:origLink></item><item><title>XNA and Windows 7 Multi-touch</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/fy6J42tuQaY/xna-and-windows-7-multi-touch.aspx</link><pubDate>Wed, 10 Feb 2010 08:35:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3052</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3052</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/02/10/xna-and-windows-7-multi-touch.aspx#comments</comments><description>&lt;p&gt;I am pretty sure, that like me you are more than capable of scanning the web for snippets of info on how to do this, well I thought, to save you the time and effort I’ll put up a simple how-to here.&lt;/p&gt;
&lt;p&gt;As ever I am standing on the shoulder of giants, the first thing I do to get multi-touch into my XNA project is to use a regular windows form to render to. I dare say there it a much better way to do this with WPF, which I am sure I’ll have a look at when I have time, but for now,&amp;nbsp; I am using the good old 2.0 Windows Form.&amp;nbsp; Now for this I have used a great post by another XNA MVP &lt;a href="http://amapplease.blogspot.com/"&gt;Pedro Guida aka “Ultrahead”&lt;/a&gt; showing how to get XNA to render to a panel control. I can’t for the life of me find his original post, it may have even been on &lt;a href="http://www.codeproject.com/"&gt;The Code Project&lt;/a&gt; and also used the &lt;a href="http://code.msdn.microsoft.com/WindowsTouch"&gt;MS Multitouch code samples&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The spawn of these two resources has&amp;nbsp; given me my own Panel control that XNA can render to AND the Windows 7 Multi-touch API can be hooked up to.&lt;/p&gt;
&lt;p&gt;So, how does all this hang together first off we open up a new XNA Windows Project, then Add a Windows Form to the project, we then need to create our own Panel object so that it can interact with multi-touch.&lt;/p&gt;
&lt;p&gt;The code for the new Panel class is 99% taken from the MS Multitouch samples and it involves hooking into the WndProc method on the control.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XNAWindowsMTPanel&lt;/strong&gt;&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f8d9bf5b-148c-4c8a-813e-10491b7574ef" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;Panel&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;///////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Protected members, for derived classes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch event handlers&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; Touchdown;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch down event handler&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; Touchup;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch up event handler&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; TouchMove;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch move event handler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// EventArgs passed to Touch handlers&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; : System.&lt;span style="COLOR:#2b91af;"&gt;EventArgs&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Private data members&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; x;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch x client coordinate in pixels&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; y;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch y client coordinate in pixels&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; id;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// contact ID&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; mask;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// mask which fields in the structure are valid&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; flags;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// flags&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; time;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch event time&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; contactX;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// x size of the contact area in pixels&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; contactY;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// y size of the contact area in pixels&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Access to data members&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; LocationX&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; x; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { x = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; LocationY&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; y; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { y = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; id; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { id = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Flags&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; flags; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { flags = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Mask&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; mask; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { mask = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Time&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; time; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { time = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; ContactX&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; contactX; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { contactX = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; ContactY&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; contactY; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { contactY = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; IsPrimaryContact&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; (flags &amp;amp; TOUCHEVENTF_PRIMARY) != 0; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Constructor&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; WMTouchEventArgs()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;///////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Private class definitions, structures, attributes and native fn&amp;#39;s&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Exercise1-Task2-Step2 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch event window message constants [winuser.h]&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_TOUCHMOVE = 0x0240;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_TOUCHDOWN = 0x0241;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_TOUCHUP = 0x0242;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_MOUSEMOVE = 0x0200;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_LBUTTONDOWN = 0x0202;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_LBUTTONUP = 0x0208;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; WM_MBUTTONDBLCLK = 0x0209;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch event flags ((TOUCHINPUT.dwFlags) [winuser.h]&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_MOVE = 0x0001;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_DOWN = 0x0002;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_UP = 0x0004;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_INRANGE = 0x0008;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_PRIMARY = 0x0010;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_NOCOALESCE = 0x0020;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHEVENTF_PEN = 0x0040;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch input mask values (TOUCHINPUT.dwMask) [winuser.h]&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHINPUTMASKF_TIMEFROMSYSTEM = 0x0001; &lt;span style="COLOR:#008000;"&gt;// the dwTime field contains a system generated value&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHINPUTMASKF_EXTRAINFO = 0x0002; &lt;span style="COLOR:#008000;"&gt;// the dwExtraInfo field is valid&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; TOUCHINPUTMASKF_CONTACTAREA = 0x0004; &lt;span style="COLOR:#008000;"&gt;// the cxContact and cyContact fields are valid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch API defined structures [winuser.h]&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Exercise1-Task2-Step4 &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;LayoutKind&lt;/span&gt;.Sequential)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;struct&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;TOUCHINPUT&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; System.&lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt; hSource;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; dwID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; dwFlags;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; dwMask;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; dwTime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; System.&lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt; dwExtraInfo;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cxContact;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cyContact;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;LayoutKind&lt;/span&gt;.Sequential)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;struct&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;POINTS&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;short&lt;/span&gt; x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;short&lt;/span&gt; y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Currently touch/multitouch access is done through unmanaged code&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// We must p/invoke into user32 [winuser.h]&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Exercise1-Task2-Step3 &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;DllImport&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt;: &lt;span style="COLOR:#2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;UnmanagedType&lt;/span&gt;.Bool)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;extern&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; RegisterTouchWindow(System.&lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt; hWnd, &lt;span style="COLOR:#0000ff;"&gt;ulong&lt;/span&gt; ulFlags);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;DllImport&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt;: &lt;span style="COLOR:#2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;UnmanagedType&lt;/span&gt;.Bool)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;extern&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; GetTouchInputInfo(System.&lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt; hTouchInput, &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cInputs, [&lt;span style="COLOR:#2b91af;"&gt;In&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Out&lt;/span&gt;] &lt;span style="COLOR:#2b91af;"&gt;TOUCHINPUT&lt;/span&gt;[] pInputs, &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cbSize);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;DllImport&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt;: &lt;span style="COLOR:#2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;UnmanagedType&lt;/span&gt;.Bool)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;extern&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; CloseTouchInputHandle(System.&lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt; lParam);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Attributes&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; touchInputSize;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// size of TOUCHINPUT structure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;SecurityPermission&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;SecurityAction&lt;/span&gt;.Demand)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; XNAWindowsMTPanel()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dock = &lt;span style="COLOR:#2b91af;"&gt;DockStyle&lt;/span&gt;.Fill;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// GetTouchInputInfo need to be&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// passed the size of the structure it will be filling&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// we get the sizes upfront so they can be used later.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchInputSize = &lt;span style="COLOR:#2b91af;"&gt;Marshal&lt;/span&gt;.SizeOf(&lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;TOUCHINPUT&lt;/span&gt;());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;CreateParams&lt;/span&gt; CreateParams&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;CreateParams&lt;/span&gt; createParams = &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.CreateParams;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createParams.ExStyle |= 0x00000020; &lt;span style="COLOR:#008000;"&gt;// WS_EX_TRANSPARENT&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; createParams;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; CreateHandle()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.CreateHandle();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;ulong&lt;/span&gt; ulFlags = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegisterTouchWindow(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.Handle, ulFlags);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;///////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Private methods&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Window procedure. Receives WM_ messages.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Translates WM_TOUCH window messages to touch events.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Normally, touch events are sufficient for a derived class,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// but the window procedure can be overriden, if needed.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;PermissionSet&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;SecurityAction&lt;/span&gt;.Demand, Name = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;FullTrust&amp;quot;&lt;/span&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; WndProc(&lt;span style="COLOR:#0000ff;"&gt;ref&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Message&lt;/span&gt; m)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Decode and handle WM_TOUCH* message.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; handled;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;switch&lt;/span&gt; (m.Msg)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; WM_TOUCHDOWN:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; WM_TOUCHMOVE:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; WM_TOUCHUP:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handled = DecodeTouch(&lt;span style="COLOR:#0000ff;"&gt;ref&lt;/span&gt; m);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;default&lt;/span&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handled = &lt;span style="COLOR:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Call parent WndProc for default message processing.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.WndProc(&lt;span style="COLOR:#0000ff;"&gt;ref&lt;/span&gt; m);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (handled)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Acknowledge event if handled.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m.Result = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; System.&lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt;(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;catch&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt; exception)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Debug&lt;/span&gt;.Print(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ERROR: Could not allocate result ptr&amp;quot;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Debug&lt;/span&gt;.Print(exception.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Extracts lower 16-bit word from an 32-bit int.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;number&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// returns:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lower word&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; LoWord(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; number)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; number &amp;amp; 0xffff;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Decodes and handles WM_TOUCH* messages.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Unpacks message arguments and invokes appropriate touch events.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window message&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// returns:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flag whether the message has been handled&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; DecodeTouch(&lt;span style="COLOR:#0000ff;"&gt;ref&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Message&lt;/span&gt; m)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// More than one touchinput may be associated with a touch message,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// so an array is needed to get all event information.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; inputCount = LoWord(m.WParam.ToInt32()); &lt;span style="COLOR:#008000;"&gt;// Number of touch inputs, actual per-contact messages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;TOUCHINPUT&lt;/span&gt;[] inputs; &lt;span style="COLOR:#008000;"&gt;// Array of TOUCHINPUT structures&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inputs = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;TOUCHINPUT&lt;/span&gt;[inputCount]; &lt;span style="COLOR:#008000;"&gt;// Allocate the storage for the parameters of the per-contact messages&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;catch&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt; exception)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Debug&lt;/span&gt;.Print(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ERROR: Could not allocate inputs array&amp;quot;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Debug&lt;/span&gt;.Print(exception.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Unpack message parameters into the array of TOUCHINPUT structures, each&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// representing a message for one single contact.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Exercise2-Task1-Step3 &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (!GetTouchInputInfo(m.LParam, inputCount, inputs, touchInputSize))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Get touch info failed.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// For each contact, dispatch the message to the appropriate message&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Note that for WM_TOUCHDOWN you can get down &amp;amp; move notifications&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// and for WM_TOUCHUP you can get up &amp;amp; move notifications&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// WM_TOUCHMOVE will only contain move notifications&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// and up &amp;amp; down notifications will never come in the same message&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; handled = &lt;span style="COLOR:#0000ff;"&gt;false&lt;/span&gt;; &lt;span style="COLOR:#008000;"&gt;// // Flag, is message handled&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Exercise2-Task1-Step4&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; inputCount; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;TOUCHINPUT&lt;/span&gt; ti = inputs[i];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Assign a handler to this message.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; handler = &lt;span style="COLOR:#0000ff;"&gt;null&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch event handler&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; ((ti.dwFlags &amp;amp; TOUCHEVENTF_DOWN) != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler = Touchdown;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; ((ti.dwFlags &amp;amp; TOUCHEVENTF_UP) != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler = Touchup;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; ((ti.dwFlags &amp;amp; TOUCHEVENTF_MOVE) != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler = TouchMove;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Convert message parameters into touch event arguments and handle the event.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (handler != &lt;span style="COLOR:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Convert the raw touchinput message into a touchevent.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; te; &lt;span style="COLOR:#008000;"&gt;// Touch event arguments&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;catch&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt; excep)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Debug&lt;/span&gt;.Print(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Could not allocate WMTouchEventArgs&amp;quot;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Debug&lt;/span&gt;.Print(excep.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// TOUCHINFO point coordinates and contact size is in 1/100 of a pixel; convert it to pixels.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Also convert screen to client coordinates.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.ContactY = ti.cyContact / 100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.ContactX = ti.cxContact / 100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.Id = ti.dwID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt; pt = PointToClient(&lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;(ti.x / 100, ti.y / 100));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.LocationX = pt.X;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.LocationY = pt.Y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.Time = ti.dwTime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.Mask = ti.dwMask;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;te.Flags = ti.dwFlags;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Invoke the event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;, te);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Mark this event as handled.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handled = &lt;span style="COLOR:#0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseTouchInputHandle(m.LParam);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; handled;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So now we have a control we can use to get MT input for, we now need to hook this control up to our form and in turn to our XNA Game class. In the form we need to give our Game class access to the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.control.handle(VS.71).aspx"&gt;handle&lt;/a&gt; it is going to render to. To do this we define XNAWindowsMTPanel object, create a Property on the form so that it can be accessed and then instantiate the XNAWindowsMTPanel object. This leaves our form source code looking like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:20211aa8-bfba-4858-b658-39a303bb1ed2" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;frmMain&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;Form&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt; panel1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt; DisplayHandle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.panel1.IsHandleCreated ?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.panel1.Handle : &lt;span style="COLOR:#2b91af;"&gt;IntPtr&lt;/span&gt;.Zero;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; frmMain(&lt;span style="COLOR:#2b91af;"&gt;Game1&lt;/span&gt; game)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;panel1 = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.Controls.Add(panel1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now in our game class we need to set up the Windows form to be the form we will be rendering to, we create a From object, in the constructor, instantiate, bind to the forms HandleDestroyed event so when the form closes we can tidy up and then show the form. We also need to be able to ‘hide’ our XNA game window to so to do this we need to bind to the XNA game windows Shown event and then hide the window. To help us do this we will need to reference System.Windows.Forms in our Game1 class and to stop any name space conflicts we will alias it with ‘SysWinForms’. We also need to set our view port so that it matches the area we are rendering to and this also needs to be done if the form is resized. &lt;/p&gt;
&lt;p&gt;The top of our Game1.cs file now looks like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c6da1553-14bb-4244-b48b-4144284c3b0f" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Audio;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Content;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.GamerServices;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Graphics;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Input;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Media;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Net;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Storage;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt; SysWinForms = System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;namespace&lt;/span&gt; GenericXNAMultiTouch&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; This is the main type for your game&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Game1&lt;/span&gt; : Microsoft.Xna.Framework.&lt;span style="COLOR:#2b91af;"&gt;Game&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt; graphics;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;SpriteBatch&lt;/span&gt; spriteBatch;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;frmMain&lt;/span&gt; frmMain;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; Game1()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt;(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content.RootDirectory = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Content&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SysWinForms.&lt;span style="COLOR:#2b91af;"&gt;Form&lt;/span&gt; gameWindow = (SysWinForms.&lt;span style="COLOR:#2b91af;"&gt;Form&lt;/span&gt;)SysWinForms.&lt;span style="COLOR:#2b91af;"&gt;Form&lt;/span&gt;.FromHandle(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.Window.Handle);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gameWindow.Shown += &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;(gameWindow_Shown);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frmMain = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;frmMain&lt;/span&gt;(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frmMain.HandleDestroyed += &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;(frmMain_HandleDestroyed);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frmMain.Resize += &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;(frmMain_Resize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frmMain.Show();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics.PreferredBackBufferHeight = frmMain.panel1.Height;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics.PreferredBackBufferWidth = frmMain.panel1.Width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; frmMain_Resize(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (GraphicsDevice.Viewport.Width != frmMain.panel1.Width || GraphicsDevice.Viewport.Height != frmMain.panel1.Height)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphicsDevice.Viewport = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Viewport&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;X = 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Y = 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Height = frmMain.panel1.Height,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Width = frmMain.panel1.Width,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxDepth = GraphicsDevice.Viewport.MaxDepth,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MinDepth = GraphicsDevice.Viewport.MinDepth,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; frmMain_HandleDestroyed(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; gameWindow_Shown(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((SysWinForms.&lt;span style="COLOR:#2b91af;"&gt;Form&lt;/span&gt;)sender).Hide();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Running this now will just give us a blank Windows Form, we need to now tell our Game1 class to render to our XNAWindowsMTPanel and this is very simple to do, simply at the end of the Draw call do this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:70013af9-f5e5-4e4d-9ace-31ccbdb5653e" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphicsDevice.Present(frmMain.DisplayHandle);&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You will now have your XNA code rendering on the windows form!! How cool is that!&lt;/p&gt;
&lt;p&gt;Now to add the MT functionality. You can see on the XNAWindowsMTPanel class that we have some events we can bind to:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e4d4b4e6-9c23-4f60-8a67-6f21d22442bd" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch event handlers&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; Touchdown;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch down event handler&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; Touchup;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch up event handler&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt;&amp;gt; TouchMove;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// touch move event handler&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So we we will get some code stubs in our Game1 class then wire these up in Windows Form (again taken from the MS MT samples)&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:90ab678f-ccfd-415b-83a4-535b6a1f61e5" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region&lt;/span&gt; Multi-Touch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch Stuff&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch down event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object that has sent the event&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touch event arguments&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; OnTouchDownHandler(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch up event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object that has sent the event&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touch event arguments&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; OnTouchUpHandler(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch move event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object that has sent the event&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touch event arguments&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; OnTouchMoveHandler(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And now to wire them up in the form:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b1c7a29d-c14f-4441-8514-c1ad445d3ed9" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; frmMain(&lt;span style="COLOR:#2b91af;"&gt;Game1&lt;/span&gt; game)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;panel1 = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch stuff&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Setup handlers&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;panel1.Touchdown += game.OnTouchDownHandler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;panel1.Touchup += game.OnTouchUpHandler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;panel1.TouchMove += game.OnTouchMoveHandler;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.Controls.Add(panel1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, we now have our XNA project rendering on a windows form that is also able to accept munti touch commands, so how can we demonstrate this?&lt;/p&gt;
&lt;p&gt;First of all we are going to create an object that we can use to store the touch events in, this will also hold some data to help us represent the touch on the screen.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:010941dc-5f9f-4e97-8069-68b82a919859" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;MTObject&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; Event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;[] spritePositions;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt; Color;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;float&lt;/span&gt; Rotation = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Size;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; MTObject(&lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e,&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; size,&lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt; color)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Event = e;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spritePositions = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;[100];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Color = color;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Size = size;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We then create a Dictionary to store these items in, I am also going to add a Texture2D to render the touch objects and give an audio que with a SoundEffect Object. This is hoe I have defined them in the Game1 class:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f570e34a-385c-4d2c-bb51-3de47eb48af1" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;MTObject&lt;/span&gt;&amp;gt; touchList = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;MTObject&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Texture2D&lt;/span&gt; sprite;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;SoundEffect&lt;/span&gt; touchWav;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now all we need to do is record when we have a touch contact, when one is removed and when one is moved. Our touch event handlers now look like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:438f8b15-01a5-4e06-b950-613fb67500ff" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region&lt;/span&gt; Multi-Touch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch Stuff&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch down event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object that has sent the event&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touch event arguments&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; OnTouchDownHandler(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Is this a new touch or an old one?&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (!touchList.Keys.Contains(e.Id))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (e.IsPrimaryContact)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList.Add(e.Id, &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;MTObject&lt;/span&gt;(e, 32,&lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt;.Red));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList.Add(e.Id, &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;MTObject&lt;/span&gt;(e, 16, &lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt;.Gold));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchWav.Play();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch up event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object that has sent the event&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touch event arguments&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; OnTouchUpHandler(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (touchList.Keys.Contains(e.Id))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList.Remove(e.Id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Touch move event handler.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// in:&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object that has sent the event&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touch event arguments&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; OnTouchMoveHandler(&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR:#2b91af;"&gt;XNAWindowsMTPanel&lt;/span&gt;.&lt;span style="COLOR:#2b91af;"&gt;WMTouchEventArgs&lt;/span&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList[e.Id].Event.LocationX = e.LocationX;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList[e.Id].Event.LocationY = e.LocationY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I then make sure that the array of points I am using to represent the touch contacts is updated, effectively giving a string of particles after the touch contact point, giving us the following Update and Draw methods:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3c6ef12f-3c5a-4320-92e4-2c4e44514ad9" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; Allows the game to run logic such as updating the world,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; checking for collisions, gathering input, and playing audio.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;param name=&amp;quot;gameTime&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;Provides a snapshot of timing values.&lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; Update(&lt;span style="COLOR:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Allows the game to exit&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;GamePad&lt;/span&gt;.GetState(&lt;span style="COLOR:#2b91af;"&gt;PlayerIndex&lt;/span&gt;.One).Buttons.Back == &lt;span style="COLOR:#2b91af;"&gt;ButtonState&lt;/span&gt;.Pressed)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;.Exit();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; key &lt;span style="COLOR:#0000ff;"&gt;in&lt;/span&gt; touchList.Keys)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; s = touchList[key].spritePositions.Length - 1; s &amp;gt; 0; s--)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList[key].spritePositions[s] = touchList[key].spritePositions[s - 1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList[key].spritePositions[0] = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;(touchList[key].Event.LocationX, touchList[key].Event.LocationY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.Update(gameTime);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; This is called when the game should draw itself.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;param name=&amp;quot;gameTime&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;Provides a snapshot of timing values.&lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; Draw(&lt;span style="COLOR:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphicsDevice.Clear(&lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt;.CornflowerBlue);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.Draw(gameTime);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt; alphaColor;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Begin();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; key &lt;span style="COLOR:#0000ff;"&gt;in&lt;/span&gt; touchList.Keys)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; s = touchList[key].spritePositions.Length - 1; s &amp;gt; 0; s--)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;touchList[key].spritePositions[s] = touchList[key].spritePositions[s - 1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alphaColor = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Color&lt;/span&gt;(touchList[key].Color.R, touchList[key].Color.G, touchList[key].Color.B, (1 - (s / (&lt;span style="COLOR:#0000ff;"&gt;float&lt;/span&gt;)touchList[key].spritePositions.Length)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(sprite, &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Rectangle&lt;/span&gt;(touchList[key].spritePositions[s].X, touchList[key].spritePositions[s].Y, touchList[key].Size, touchList[key].Size), &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Rectangle&lt;/span&gt;(0, 0, sprite.Width, sprite.Height), alphaColor, touchList[key].Rotation++, &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Vector2&lt;/span&gt;(sprite.Width / 2, sprite.Height / 2), &lt;span style="COLOR:#2b91af;"&gt;SpriteEffects&lt;/span&gt;.None, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alphaColor = touchList[key].Color;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(sprite, &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Rectangle&lt;/span&gt;(touchList[key].spritePositions[0].X, touchList[key].spritePositions[0].Y, touchList[key].Size, touchList[key].Size), &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Rectangle&lt;/span&gt;(0, 0, sprite.Width, sprite.Height), alphaColor, touchList[key].Rotation++, &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Vector2&lt;/span&gt;(sprite.Width / 2, sprite.Height / 2), &lt;span style="COLOR:#2b91af;"&gt;SpriteEffects&lt;/span&gt;.None, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.End();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphicsDevice.Present(frmMain.DisplayHandle);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;[Go to the site to view embedded media]&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And that’s about it, hope you find it useful. The solution for this post can be found &lt;a href="http://xna-uk.net/files/folders/randomchaos/entry3054.aspx"&gt;here&lt;/a&gt;. &lt;font color="#000000"&gt;As ever C&amp;amp;C welcome.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3052" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/fy6J42tuQaY" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Source/default.aspx">Source</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/2D/default.aspx">2D</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Mulittouch/default.aspx">Mulittouch</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/02/10/xna-and-windows-7-multi-touch.aspx</feedburner:origLink></item><item><title>ZuneRay</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/f8i_aPVUjT8/zuneray.aspx</link><pubDate>Tue, 09 Feb 2010 22:32:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3049</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3049</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/02/09/zuneray.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;So, I have this ZuneHD and have been playing about with it for abit now, so looked into what I can do with it. Turns out quite a bit after finding some great samples from the likes of &lt;a href="http://nickgravelyn.com/"&gt;Nick Gravelyn&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;So as you can see in the clip,&amp;nbsp;with these samples under my belt I started writing my own Raycaster for the Zune. It is still early days yet, need to do afair bit more (just like all my other unfinished projects I hear you shout!!) and&amp;nbsp;I think it will make for a nice base for creating raycasting games on the Zune.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t know about you (or even if you are old enough to remember), but I loved &lt;a href="http://en.wikipedia.org/wiki/Wolfenstein_3D"&gt;Wolfenstine3D&lt;/a&gt;, so this sort of engine will enable you to make games just like that :)&lt;/p&gt;
&lt;p&gt;As ever C&amp;amp;C welcome.&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3049" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/f8i_aPVUjT8" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Zune/default.aspx">Zune</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Raycasting/default.aspx">Raycasting</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/ZuneRay/default.aspx">ZuneRay</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/02/09/zuneray.aspx</feedburner:origLink></item><item><title>DXTop, now with Windows7 Multi-touch and Ray Picking</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/2Bog3Tunqnw/dxtop-now-with-windows7-multi-touch-and-ray-picking.aspx</link><pubDate>Fri, 05 Feb 2010 17:32:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3045</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3045</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/02/05/dxtop-now-with-windows7-multi-touch-and-ray-picking.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;OK, have now integrated the Windows7 Multi-touch API into this odd XNA project and with that integrated Ray picking so I can now interact with the applications.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;&amp;nbsp;I will start to post this stuff soon :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;C&amp;amp;C Welcome...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3045" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/2Bog3Tunqnw" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Ray+Picking/default.aspx">Ray Picking</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Multi-touch/default.aspx">Multi-touch</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Windows7/default.aspx">Windows7</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DXTop/default.aspx">DXTop</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/02/05/dxtop-now-with-windows7-multi-touch-and-ray-picking.aspx</feedburner:origLink></item><item><title>Programming in C# with XNA – Object Orientated Basics</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/VpYA5CvUeII/programming-in-c-with-xna-object-orientated-basics.aspx</link><pubDate>Mon, 01 Feb 2010 08:51:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3023</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3023</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/02/01/programming-in-c-with-xna-object-orientated-basics.aspx#comments</comments><description>&lt;p&gt;We now have some of the basics under our belt, we can create variables, we can assign values to them and make conditional decisions on our code. We are now going to look at the Object Orientated side of Programming (&lt;a href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;OOP&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is OOP?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In as simple terms as I can muster, it’s a way of structuring our data, we can take our variables and put them in an &lt;a href="http://msdn.microsoft.com/en-us/library/ms173110.aspx"&gt;Object&lt;/a&gt;. “But Why?” I hear you ask… Well, it’s a great way of structuring your programs so that they resemble more obvious entities, for example, in the last post we created a number of variables, player name, score, lives etc… Rather than have a load of disbanded variables roaming about our game code we can put these variables into a single Object and we could call that object Player. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to define an Object&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To define an object we are going to use a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/x9afc042.aspx"&gt;class&lt;/a&gt;’. I think a good way to think of a ‘class’ is to see it as a blueprint of your Object. If we were to create a more complex Object than a player, lest say a Vehicle then we need to think about what a Vehicle will need, so, for starters it will need an engine, a fuel tank, a navigation system to turn, accelerate and break. As a basic vehicle goes, that’s pretty much all we need. So a definition of a vehicle class could look like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c30c3bbf-ad3a-429a-9e25-e9609b953345" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseEngine&lt;/span&gt; Engine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseFuelTank&lt;/span&gt; FuelTank;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseNavSystem&lt;/span&gt; NavSystem;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Vector3&lt;/span&gt; Velocity;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Vector3&lt;/span&gt; Acceleration;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseVehicle()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Engine = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseEngine&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FuelTank = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseFuelTank&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NavSystem = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseNavSystem&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;To add a new class to the project, right click on the project name (RCProgrammingTutorial) select ‘Add’ then ‘Class’ from the drop down menu.&lt;/p&gt;
&lt;p&gt;You can see in our class we contain other objects here, BaseEngine, BaseFuelTank and BaseNavSystem, Velocity (we need to know what direction and speed we are heading) and Acceleration. You can also see what is called a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/ace5hbzh.aspx"&gt;constructor&lt;/a&gt;’ (ctor). This is used to set up our member objects so they are ready to use. You don’t have to create a constructor, but it can help if you have member objects you want initialized when you create an instance of the object.&lt;/p&gt;
&lt;p&gt;As I am sure you can imagine, we could take this example a long way, there are lots more things a vehicle needs, but this help show the basic layout of a class and the sort of things you need to think about when creating them. So how will our Player class look?&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fb7c616f-d4d9-4105-8aaf-4321522ee29b" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Player&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; score;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; Player(&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;score = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We have defined the Player class with two members playerName and score. We have also created a constructor with a parameter of string name, this means when we create an instance of the object we can load the playerName variable at the same time. We have also defined the members as ‘&lt;a href="http://msdn.microsoft.com/en-us/library/bcd5672a(VS.71).aspx"&gt;protected&lt;/a&gt;’, I will explain this a bit more in the section &lt;strong&gt;Inheritance&lt;/strong&gt;, but in essence, the protected &lt;a href="http://msdn.microsoft.com/en-us/library/wxh6fsc7(VS.71).aspx"&gt;access modifier&lt;/a&gt; means that only this class can see this variable. So it has restricted the ‘scope’ of this variable to this class, which means that when we create an instance of the object, we can’t access the variables, “Why would we want to do that!!” I hear you shout, well this is a form of encapsulation..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes we don’t want to give full access to our member variables or we may want to do some extra processing when member variables are accessed or set and this can be done with ‘&lt;a href="http://www.dotnetspark.com/kb/773-what-is-encapsulation.aspx"&gt;encapsulation&lt;/a&gt;’. So, how do we give the outside world access to those protected or &lt;a href="http://msdn.microsoft.com/en-us/library/st6sy9xe.aspx"&gt;private&lt;/a&gt; member variables?&amp;nbsp; With &lt;a href="http://msdn.microsoft.com/en-us/library/x9fsa0sw(VS.80).aspx"&gt;Properties&lt;/a&gt; or functions. Personally I prefer to use properties, but in some cases you will need to use functions to do this depending on the kind of actions you are trying to impose. How do we set up properties then, like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e415a6f6-d1a2-401d-9b4b-2e06fc43b9ac" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; PlayerName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; playerName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Code to detect if bad language has bee used&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Score&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; score; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { score = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I have created two properties, one for playerName and one for score, as you can see the layout is different but they both do the same job really, the ‘get’ section allows access to the variable and the set allows the variables content to be changed. As you can see in the set part of the PlayerName property you could have code there to make sure that the players name is not set using bad language, I am sure if you had a global high score table you don’t want any old text going up there… I have also made sure that the properties have a logical name for the member they are the property for, you can see I have named the member variables with camel case and the external property with initial upper case letters, this means I have the same name for the two entities but I can easily distinguish between the two in code.&lt;/p&gt;
&lt;p&gt;The properties are great for this, but what if you wanted to then display a message or indicate to the rest of the program that a bad name was given? You could still use properties and have another variable that indicates if a bad name has been used, the rest of the program could then check this and act accordingly, or you could use a function like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e5943063-377d-4cbe-89b9-023d5c23ca94" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; SetPlayerName(&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; badName = &lt;span style="COLOR:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Code to detect if bad language has bee used&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (!badName)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = name;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; badName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We can now use this method to set the playerName, and the return result can then be used to know if we where successful or not. If you are doing this, what do you think you should do with the code in the constructor?? :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inheritance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We have seen how we can create a definition for the objects we are going to use in our programs and games, but wouldn&amp;#39;t it be nice if we could create some basic building block objects and be able to extend and build a hierarchy of objects from it…? And that’s just what &lt;a href="http://msdn.microsoft.com/en-us/library/ms173149.aspx"&gt;Inheritance&lt;/a&gt; is. Lets go back to our BaseVehilcle class, from this we could create a BaseRoadVehicle class which could look something like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2d449363-7eda-456c-8eb1-a2c4fce6da84" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Passengers;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cargoArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; doors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadVehicle() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;How easy was that! We created a new class of BaseRoadVehicle and inherited (derived) from BaseVehicle, this means that instances of the BaseRoadVehicle automaticaly get the Engine, FuelTank and all the other members of BaseVehicle as well as extending it with Wheels, Passengers, CargoArea and Doors, we could derive again from BaseRoadVehicle and create a BaseRoadBike class where we ensure that Wheels are never greater than 2 and Passengers &amp;gt; 1 and on and on, we can also, at the same time create a BaseWaterVehicle deriving from BaseVehicle or a BaseAirVehicle giving us a hierarchy of vehicle objects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Polymorphism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another awesome feature of OOP is &lt;a href="http://msdn.microsoft.com/en-us/library/ms173152(VS.80).aspx"&gt;Polymorphism&lt;/a&gt;. With this we can change the behavior of the base class methods (but only for this instance of the hierarchy), so for example, with out BaseRoadVehicle class we could have created a SetNumberOfWheels function to alter the number of wheels on a vehicle we could replace this function in our derived BaseRoadBike class by using the new keyword when defining out new method giving us two classes that look like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:dea2095a-78fe-45fd-a8c2-b3cc9756ffdf" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Passengers;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cargoArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; doors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadVehicle() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = wheelCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadBike&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadBike() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (wheelCount != 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = wheelCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now when an object of the type BaseRoadVehicle uses the SetNumberOfWheels method, the wheels will ALWAYS be set to 2 no matter what number is passed in the wheelCount parameter. But what if we wanted to keep the original functionality of a method and add to it, then we would need to use an override. Lets create a class called BaseRoadBuss when setting wheel numbers for our bus we want them to always be an even number (I am yet to see a buss with an add number of wheels)&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c639bedb-bc06-4297-9054-a0feed52c8ad" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Passengers;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cargoArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; doors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadVehicle() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = wheelCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadBuss&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadBuss() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; ((wheelCount % 2) != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheelCount -= 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.SetNumberOfWheels(wheelCount);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, we have changed the BaseRoadVehicle method and made it a &lt;a href="http://msdn.microsoft.com/en-us/library/9fkccyh4(VS.80).aspx"&gt;virtual&lt;/a&gt; function, this means that any classes deriving from this class can override this method with there own version of it, which is what we have done in the BaseRoadBuss calss. In this overriden function we make sure that the wheel count is an even number, we then use the base class version of this function to set the wheels variable with the newly corrected value for wheelCount.&lt;/p&gt;
&lt;p&gt;There is a lot to take in in this post, OOP is a huge subject and I recommend you doing more reading on it to get a better handle that what I have given here, this is just the tip of the ice burg as far as OOP goes, but I hope I have given you enough to be getting on with and enough to help you see what we are going to d next….write a basic XNA game&lt;/p&gt;
&lt;p&gt;As ever, if you have ANY questions then please post them here or PM me and I will do my best to help you out. I have put the solution to this post &lt;a href="http://xna-uk.net/files/folders/randomchaos/entry3025.aspx"&gt;here&lt;/a&gt;, it wont do much other than illustrate what we have gone over thus far. Oh, and if you see anything that you think I have worded badly, please let me know and I will correct it ASAP.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/programming-in-c-with-xna-programming-basics.aspx"&gt;Previous&lt;/a&gt; | Next&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3023" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/VpYA5CvUeII" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Tutorial/default.aspx">Tutorial</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/02/01/programming-in-c-with-xna-object-orientated-basics.aspx</feedburner:origLink></item><item><title>DXTop</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/ROc9kFM8cdg/dxtop.aspx</link><pubDate>Fri, 29 Jan 2010 23:32:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3019</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3019</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/dxtop.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;So, as I was saying in my earlier &lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/3d-desktop-well-the-start-of-one.aspx"&gt;post&lt;/a&gt;,&amp;nbsp;I can render&amp;nbsp;the app thumbnails on some textured quads, as you can see it is still a little glitchy, need to speed up the screen grab and bitblit, but not sure I can....&lt;br /&gt;&lt;br /&gt;So, putting multi touch support in there is next I guess as well as some nice particle effects for the touch pints as well as some audio ques...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;I recon I have the makings of a 3D desktop, what do you think...?&lt;br /&gt;&lt;br /&gt;You never know it may turn out useful lol&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3019" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/ROc9kFM8cdg" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Multi-touch/default.aspx">Multi-touch</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DWM/default.aspx">DWM</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/GDI_2B00_/default.aspx">GDI+</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Windows7/default.aspx">Windows7</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DXTop/default.aspx">DXTop</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/dxtop.aspx</feedburner:origLink></item><item><title>3D Desktop.....well the start of one...</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/Bjirs9oNw1I/3d-desktop-well-the-start-of-one.aspx</link><pubDate>Fri, 29 Jan 2010 12:10:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3011</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3011</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/3d-desktop-well-the-start-of-one.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;I have been playing around with XNA using DWM, GDI and the good old Win32 API&amp;#39;s and think I can create a kind of 3D desktop with them.&lt;br /&gt;&lt;br /&gt;The intention is to also leverage the Windows 7 Multi Touch API as well so you will be able to gesture from one application to the next, extract and inject data from one application to the next, all off my XNA desktop.&lt;br /&gt;&lt;br /&gt;I still have a number of glitches to iron out, and this clip shows the application just taking the current app that is in use and displaying a 2D representation of it in XNA. As you can imagine, now I have an image of a n application, I can now do anything I like with it in XNA.......Cool eh..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;&amp;nbsp;As ever C&amp;amp;C welcome :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3011" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/Bjirs9oNw1I" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Multi-touch/default.aspx">Multi-touch</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DWM/default.aspx">DWM</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/GDI_2B00_/default.aspx">GDI+</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Windows7/default.aspx">Windows7</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/3d-desktop-well-the-start-of-one.aspx</feedburner:origLink></item><item><title>XNA Focused ‘X48’ Conference Announced</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/rV1lCXS5tEQ/xna-focused-x48-conference-announced.aspx</link><pubDate>Thu, 14 Jan 2010 09:42:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2998</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2998</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/01/14/xna-focused-x48-conference-announced.aspx#comments</comments><description>&lt;p&gt;Just came across &lt;a href="http://www.edge-online.com/news/xna-focused-%E2%80%98x48%E2%80%99-conference-announced"&gt;this&lt;/a&gt; in &lt;a title="Edge" href="http://xna-uk.net/controlpanel/blogs/Edge-onlone.com"&gt;Edge-online.com&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, if any of you readers are taking part in either the &lt;a href="http://x48birmingham.eventbrite.com/"&gt;Birmingham&lt;/a&gt; or &lt;a href="http://x48huddersfield.eventbrite.com/"&gt;Hudersfield&lt;/a&gt; event, it would be great to hear from you. Let us know how the event went, how you did and what you gaiend from the experience.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Good luck to all those entering :)&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2998" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/rV1lCXS5tEQ" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Events/default.aspx">Events</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/01/14/xna-focused-x48-conference-announced.aspx</feedburner:origLink></item><item><title>Blacksun Water As A Post Process</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/oplVyY0oNNM/blacksun-water-as-a-post-process.aspx</link><pubDate>Wed, 23 Dec 2009 20:31:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2949</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>13</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2949</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/23/blacksun-water-as-a-post-process.aspx#comments</comments><description>&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;[Go to the site to view embedded media]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;OK, my mate Dave found an awesome article on gamedev.net, it was describing how to render water without any geom by doing it as a post process. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Here is my attempt at it so far. I still have much to do, bits to fix and add in, but I think it is looking OK now. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;If you want to have a look at the gamedev.net article you can find it &lt;a href="http://www.gamedev.net/reference/programming/features/ppWaterRender"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Probably my last post for this year, in the new year, as well as continuing the Programming set of posts&amp;nbsp;I will start to post what I have been doing with the Blacksun Engine, from the Asset manager to instancing, the deferred lighting and this water psot process.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Merry Christmas and a Happy new year :D&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2949" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/oplVyY0oNNM" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Terrain/default.aspx">Terrain</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Water/default.aspx">Water</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Post+Processing/default.aspx">Post Processing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/2D+Pixel+Shaders/default.aspx">2D Pixel Shaders</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Lighting/default.aspx">Lighting</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Directional+Lights/default.aspx">Directional Lights</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/23/blacksun-water-as-a-post-process.aspx</feedburner:origLink></item><item><title>Blacksun Terrain Systems</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/_XP6A5y4sv4/blacksun-terrain-systems.aspx</link><pubDate>Fri, 18 Dec 2009 14:23:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2935</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2935</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/18/blacksun-terrain-systems.aspx#comments</comments><description>&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;[Go to the site to view embedded media]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;I have started to move some old and new stuff into the engine, in this clip you can see the start of my new terrain system. It&amp;#39;s based on GeoClip mapping, but at the moment I am just brute forcing the terrain. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;All the calcs for the terrain are done on the GPU with the exception of the vert X and Z coord, everything else, the normals, height, tangent data, texture weights etc are all on the GPU. Gives me pretty economical large terrain :) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Oh, spot the error in the clip if you can :) If you spot it I&amp;#39;ll tell you how I corrected it....&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2935" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/_XP6A5y4sv4" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Terrain/default.aspx">Terrain</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Lighting/default.aspx">Lighting</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Directional+Lights/default.aspx">Directional Lights</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/18/blacksun-terrain-systems.aspx</feedburner:origLink></item><item><title>Blacksun Post Processing</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/bRfAH7FicCs/blacksun-post-processing.aspx</link><pubDate>Wed, 16 Dec 2009 23:21:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2926</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2926</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/16/blacksun-post-processing.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;I have just added in my post processing framework, and I am shocked to find it does not dent the FPS one bit!&lt;br /&gt;&lt;br /&gt;In this clip you can see bloom, DoF, Radial Blur and a few others, I have had 13 post process effects and still not drop in performance.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;As ever C&amp;amp;C welcome..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2926" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/bRfAH7FicCs" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Post+Processing/default.aspx">Post Processing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/16/blacksun-post-processing.aspx</feedburner:origLink></item><item><title>Programming in C# with XNA – Programming Basics</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/GogVUjHR6t0/programming-in-c-with-xna-programming-basics.aspx</link><pubDate>Tue, 08 Dec 2009 14:42:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2894</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2894</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/programming-in-c-with-xna-programming-basics.aspx#comments</comments><description>&lt;p&gt;It’s been far too long since my last post on this set, but hope this will help make up for it. In this post we are going to cover some programming basics as I see them in this context. I am going break the concepts or areas up into three sections, “What is it?” or “What are they?”, “What does it/they look like?”, and “How do I use it/them?”. In the first section I will describe what the concept is, so no code, just a description of it. I will probably use quite visual terms so you can “see” what it is, rather than just giving you just the concept. Next, we will have a look at the concept, a look at the source code, I will then describe it’s components. and finally I will show how the concept is used and describe the kind of areas you would use it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Compiler Basics&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is a computer program?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, simply it is a list of instructions that the computer will obey. I think an important thing to remember is that the computer will carry out these instructions to the letter, it will make no assumptions of what you intend your instructions to do, it will do EXACTLY what you tell it to do. &lt;/p&gt;
&lt;p&gt;So we now know that a program is a list of instructions for your computer to carry out, but how do we give the computer these instructions? Well that’s where a programming language comes in like C#. Now, as I am sure you are aware, your computer does not understand English, or what ever your native tongue is, and in fact it doesn’t even understand the programming language. This is what the compiler is for, it takes the instructions you have written in C# and ‘compiles’ it into a language the machine understands directly and is able to act on. This compiled code (in the case of a windows application) is a .exe file. Now the compiler we will be using is Visual Studio and once we have written our instructions we can get it to compile our code and we can then play our game.&lt;/p&gt;
&lt;p&gt;Now with this in mind, the project we have just created already has instructions as we can see in the project we have a Program.cs and Game1.cs file, so without even entering a new line of code we can compile and execute this code. At the top of your IDE in the menu you have an option called ‘Build’, move your mouse over it and a number of options will appear.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCBuild_3F2A6CC9.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCBuild" border="0" alt="RCBuild" src="http://xna-uk.net/blogs/randomchaos/RCBuild_thumb_5A9F48FF.jpg" width="653" height="353" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Click the ‘Build Solution’ option, as you can see you can also just press F6. Now if you are quick you should see the compiler telling you it has started the build process in the bottom left corner.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCBuildStarted_72760A58.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCBuildStarted" border="0" alt="RCBuildStarted" src="http://xna-uk.net/blogs/randomchaos/RCBuildStarted_thumb_23291204.jpg" width="441" height="75" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And once done, it will tell you it has completed. Now there is a much better way of seeing what goes on during the build process,this is important to know as you are going to write some code that just wont build for a number of reasons, most common of which you will make typo’s that will stop the build process. To get more information return to the menu at the top, click ‘View’ and then click ‘Output’, again, there is a short cut, you can open this view by pressing Ctrl+W then O&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCViewOutput_13A60035.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCViewOutput" border="0" alt="RCViewOutput" src="http://xna-uk.net/blogs/randomchaos/RCViewOutput_thumb_6CF773E7.jpg" width="252" height="379" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You should now have the output window open, and you should be able to see messages from the build process which should now look like this&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCOutputWindow_04AEAB4E.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCOutputWindow" border="0" alt="RCOutputWindow" src="http://xna-uk.net/blogs/randomchaos/RCOutputWindow_thumb_3C80EF71.jpg" width="628" height="275" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now that we have compiled our project, lets run it! So, back to the menu, click ‘Debug’ then click ‘Start Debugging’, and again there is a short cut, F5. And HEY PRESTO! We have a game running!! OK, it’s not Gears Of War or Halo 3, but it’s a start… Also, if you look back at the output window you will see a new set of messages :)&lt;/p&gt;
&lt;p&gt;You now know how to build and execute the project, so I think it’s more than about time we start learning how to code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Variables&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What are they?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I think the best way to think of these are as box’s that we can put things in, for example, if you have a shoe box, you would use that to put shoes in, in the real world you can put what ever fits into a shoe box, but for the purposes of this tutorial, only what the box was made for can be stored. So, in our game, we will want to store the players score, so we will need to use a variable to do this or the players name, lives, health etc..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do they look like?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now in C# we have a lot of variable types, in other words lots of kinds of box’s to put things in.&lt;strong&gt; &lt;/strong&gt;Here are a few of them:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3a51a933-9bc5-4e5e-b602-0054bbc63497" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;char&lt;/span&gt; c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;byte&lt;/span&gt; b;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; s;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; o;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Vector2&lt;/span&gt; v2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Matrix&lt;/span&gt; m;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There are many, many more and you can create your own. The type of variable you choose to use is important, in the list above there is a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/x9h8tsay.aspx"&gt;char&lt;/a&gt;’, this is used to store a single character, an ‘&lt;a href="http://msdn.microsoft.com/en-us/library/5kzh1b5w(VS.80).aspx"&gt;int&lt;/a&gt;’, this will store an integer (a whole number, a number without a decimal point), a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/5bdb6693(VS.80).aspx"&gt;byte&lt;/a&gt;’, this will store a number in the range of 0 to 255, a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/362314fe.aspx"&gt;string&lt;/a&gt;’, this is used for storing words and sentences; in fact this post it just a load of strings, an ‘&lt;a href="http://msdn.microsoft.com/en-us/library/9kkx3h3c.aspx"&gt;object&lt;/a&gt;’, now this one is a bit special and can store anything but you should avoid using them :), a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector2.aspx"&gt;Vector2&lt;/a&gt;’ this stores coordinates, like on a map, and finally a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.matrix.aspx"&gt;Matrix&lt;/a&gt;’, we probably wont cover these here, but I put them in so you know of them. As you can see the variables here are made up from two parts, the type and the name of the variable. You have probably noticed that some types are in blue and others in, well a lighter blue, that is because the later two are structures, we wont cover this now, just remember they are a type.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do I use them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As I have already mentioned we use variables to store information (data), so lets look at the two examples I gave above, the players score and the players name, so I would put the players score in an ‘int’ and his name in a ‘string’. It’s important to choose the right variable types to store the data we want, for example, I could have used the ‘byte’ type to store the plyers score, but our score could then only go up to 255, and I am sure we will want more range than that..&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1c969717-be53-49b2-a763-6ae403dea088" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; playerScore;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The naming of our variable names is important too, we should give them sensible and logical names that describe there use, so in the case of our player score and player name I have called them just that, ‘playerName’ and ‘playerScore’, you can also see I have not made the first letter a capital (upper case) this is because I use a variable naming convention called &lt;a href="http://en.wikipedia.org/wiki/CamelCase"&gt;CamelCase&lt;/a&gt;, now we wont use this in all naming instances, but for local variables (we will discuss local variables next) we will.&lt;/p&gt;
&lt;p&gt;This is called ‘declaring’ variables, and when I declare my variables I like to set their values so I know there content from the start (might be the old C programmer in me) and we do it like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:32504650-c88d-4147-9701-5fcb8977dd5b" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName = &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; playerScore = 0;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, in those two lines of code we have created two variables (box’s), logically named them and given them values (put data in the box’s)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Scope&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Scope is the ‘visibility’&amp;nbsp; of our variables, what parts of our program can see and use them. The scope of a variable is within the ‘{ }’ braces that is is declared within. We can also add ‘&lt;a href="http://msdn.microsoft.com/en-us/library/wxh6fsc7(VS.71).aspx"&gt;Access Modifiers&lt;/a&gt;’ to a variable to extend it’s scope.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What does it look like? &amp;amp; &lt;strong&gt;How do I use it?&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here I have put in our two new variables at the top of our Game1 class, I have also created a new variable in the constructor (I’ll get onto constructors later) called ‘enemyName’&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7dcd2ea5-f5c6-4547-ab2b-a672d873d07f" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Game1&lt;/span&gt; : Microsoft.Xna.Framework.&lt;span style="COLOR:#2b91af;"&gt;Game&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt; graphics;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;SpriteBatch&lt;/span&gt; spriteBatch;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName = &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; playerScore = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; Game1()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt;(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content.RootDirectory = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Content&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; enemyName = &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Player 1&amp;quot;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerScore = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; Allows the game to perform any initialization it needs to before starting to run.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; This is where it can query for any required services and load any non-graphic&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; related content.&amp;nbsp;&amp;nbsp;Calling base.Initialize will enumerate through any components&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; and initialize them as well.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; Initialize()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// TODO: Add your initialization logic here&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;enemyName = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Bad Dude 1&amp;quot;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.Initialize();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, our first two variables have a scope that is visible throughout the whole of the class and so can be accessed and used in the constructor for Game1, where we set the players name to be “Player 1” and ensure he has a score of 0. We also created a new variable for the name of our enemy, the scope of this variable is ONLY visible in the constructor and so where I have tried to use it in the Initialize method will cause a compile error (Hit F5 and see)&lt;/p&gt;
&lt;p&gt;I will go onto access modifiers when we look at creating our own types later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Decision Making &amp;amp; Flow Control&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This concept is where the actual game mechanics reside, it’s how we will know when to increment the score, reduce the players lives or end the game. In C# we have a few devices at our disposal, the ‘if’ statement, ‘switch’ and a variety of mechanisms to loop the flow and with in them methods to control the loops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do they look like? &amp;amp; How do I use them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the ‘if’ statement we can decide if we want to execute a block of code or not.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:836eeb1b-2e92-46c8-b8d5-df1e61d7d9d9" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerLives == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Code to end the game here ...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, with this ‘if’ statement I am saying, if the variable playerLives is 0 then I want to run the code that will do my end game stuff. Notice I am using ‘==’ to check if the variable is ‘equal to’ 0 (checking the contents of the box) and not setting the variable to the value of 0 (putting 0 in the box).&lt;/p&gt;
&lt;p&gt;With the ‘if’ statement also comes the ‘else’, this can be used to execute code should the ‘if’ condition fail.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:667a64e4-b20d-4173-9729-6dffbc6d00e1" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerHealth &amp;lt;= 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives--;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt;(playerHealth != 100)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerHealth += .5f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Here we have a slightly more complicated ‘if’ statement, if the players health is less than or equal to 0 then the player loses a life, ‘else’ we are the checking if the players health is not (!) equal to 100 then we add .5 to it. We have seen a few conditional statements now what other statements are there? Well here is a list of all the logical operators.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f45739f3-ac5b-417a-ba16-7666e5d75f67" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable equal to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable greater then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable greater than or equal to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable less than&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable less than or equal to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable not&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable not equal to&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We can also check more than one condition in an if statement by using the ‘&amp;amp;&amp;amp;’ (and) and ‘||’ (or) operators like this&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8b3320e8-d197-4f94-8032-80c66cc75ae0" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerScore &amp;gt;= 1000 &amp;amp;&amp;amp; playerScore &amp;lt;= 1500 &amp;amp;&amp;amp; !hadExtraLife)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hadExtraLife = &lt;span style="COLOR:#0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;What we are doing here is saying if the players score is greater than or equal to 1000 and the players score is less than or equal to 1500 (players score between 1000 and 1500) and we have not already given an extra life, then we set the hadExtraLife variable to true and add one to the players life counter.&lt;/p&gt;
&lt;p&gt;The ‘switch’ statement is not so flexible but you can literally use it to switch between conditions&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bcc4e70a-4c24-4311-b1be-73a321a2421c" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;switch&lt;/span&gt; (playerScore)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 500:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 1000:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 1500:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 2000:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What this block of code will do is add one to the players lives if there score is equal to 500,1000, 1500 or 2000. You will also see in here a command called ‘break’ this will be covered more in the loops.&lt;/p&gt;
&lt;p&gt;So a loop is a way of executing a block of code multiple times, there are again a number of methods at our disposal to do this, the ‘while’, ‘do while’ and ‘for’ loops, so lets have a look at them (there is also a ‘foreach’ but again we will cover that later)&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:30c51c03-46b8-4029-acde-88121f43bbdd" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;while&lt;/span&gt; (playerLives &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;do&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;span style="COLOR:#0000ff;"&gt;while&lt;/span&gt; (playerLives &amp;gt; 0);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; i = 0; playerLives &amp;gt; 0; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The ‘while’ loop execute until the condition is no longer met, the players lives are less than or equal to 0, so if the players lives are 0 before we get to star the loop the loop may never execute. The ‘do while’ loop will execute at least once as the condition is not checked until the end of the loop, and again the loop will run until the condition is no longer met. The ‘for’ loop is about the most complex loop we have as we can setup a variable, in this case the ‘int’ i who’s scope will be the ‘for’ loop, a test condition, and then also increment the new variable (and and other for that matter).&lt;/p&gt;
&lt;p&gt;So what happens if something happens in the loop that makes me want to either leave it or return to the top again? Well that’s where ‘break’ and ‘continue’ come in. see the loop below&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0606ab0f-2773-422c-868c-cec9c8c55b50" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;while&lt;/span&gt; (playerLives &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerScore &amp;gt;= 50)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerHealth == 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I guess not the most logical example, but I am using it to show you the mechanism, so in this example, we will continue to execute our loop while the players lives are greater than 0, if the players score is greater or equal to 50 then we will go no further in the loop and return back to the top and start gain, if the players health is equal to 1 then we will exit the loop.&lt;/p&gt;
&lt;p&gt;So, we have dipped out toe into programming, if you are following this set of posts, then please make sure you understand the concepts I am trying to explain here before moving onto the nest post. If you have ANY questions on ANYTHING covered here then please don’t hesitate to ask, either comment here on this post, or PM me and I will do my best to help you out. By all means, google and research any of the topics here for more information on them, there are plenty of resources out there.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2009/10/14/programming-in-c-with-xna-visual-studio.aspx"&gt;Previous&lt;/a&gt; | &lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2010/02/01/programming-in-c-with-xna-object-orientated-basics.aspx"&gt;Next&lt;/a&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2894" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/GogVUjHR6t0" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Tutorial/default.aspx">Tutorial</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/programming-in-c-with-xna-programming-basics.aspx</feedburner:origLink></item><item><title>XBLIG-UK December 2009</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/CRWgEYRqOcA/xblig-uk-december-2009.aspx</link><pubDate>Tue, 08 Dec 2009 13:44:35 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2891</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2891</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/xblig-uk-december-2009.aspx#comments</comments><description>&lt;p&gt;Well what a great day that was! I gave my first public talk on XNA at the &lt;a href="http://www.xblig-uk.net"&gt;XBLIG-UK&lt;/a&gt; event, not sure if I put too much in, left too much out, but I enjoyed it none the less. It was organized by &lt;a href="http://xna-uk.net/blogs/braindump"&gt;Edward Powel&lt;/a&gt; (our &lt;a href="http://xna-uk.net/members/VeraShackle.aspx"&gt;VeraShackle&lt;/a&gt;) over at the &lt;a href="http://www.nxtgenug.net"&gt;NxtGen UK UG&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We had talks about the Zune HD from &lt;a href="http://wotudo.net/blogs/wotudo/archive/2009/12/05/xblig-xna-day.aspx"&gt;Paul Foster&lt;/a&gt; a Microsoft Evangialist, myself whittering on about UV mapping in Blender3D (Note to self: must get the new version), then John Hampson with procedural implementation in XNA (check out &lt;a href="http://britonia-game.com"&gt;Britonia&lt;/a&gt;, that’s Johns stuff!), then Dr Nick Hawes on how Academic A.I. could be used in Gaming, Steve Miles great talk on overriding the native SpriteBatch, our very own Dave Bonner from &lt;a href="http://darkomengames.co.uk"&gt;Dark Omen Games&lt;/a&gt; describing the XBLIG publishing process, fellow MVP Rich Costall showing off a child spawned from the mixing of XNA and Silverlight , Salvatore Fileccia from &lt;a href="http://rare.co.uk"&gt;Rare&lt;/a&gt; who went over the good and bad times implementing Physics with &lt;a href="http://banjo-kazooie.com"&gt;Banjo Kazooie&lt;/a&gt;, an awesome talk by Paul Manzotti on the implementation of sound using XACT, and naturally a great talk by &lt;a href="http://xna-uk.net/blogs/braindump"&gt;Edward Powel&lt;/a&gt; on the use of content importers!!&lt;/p&gt;  &lt;p&gt;Yes!! It was a very full day and wass 99.9% glitch free too!&lt;/p&gt;  &lt;p&gt;I think that the NxtGen guys will be putting some pics up and links to all the speakers presentations, the XNA project I used to show the UV mapping will be there as well as my presentation, so you will be able to see how much I left out due to time. They have just put up a pod cast about the day which can be listened to &lt;a href="http://www.nxtgenug.net/downloads/072_NxtGenUG_XNADay.mp3"&gt;here&lt;/a&gt;, now, I as there honest, though you might not know that from the pod cast :P&lt;/p&gt;  &lt;p&gt;If you did attend, let me know what you thought of my talk, it was my first so I am not sure if I left too much out or it all went over peoples heads :) C&amp;amp;C is welcome.&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2891" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/CRWgEYRqOcA" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/A.I/default.aspx">A.I</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/HLSL/default.aspx">HLSL</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Physics/default.aspx">Physics</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Dark+Omen+Games/default.aspx">Dark Omen Games</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Talk/default.aspx">Talk</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Event/default.aspx">Event</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XBLIG-UK/default.aspx">XBLIG-UK</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/xblig-uk-december-2009.aspx</feedburner:origLink></item><item><title>Deferred Shadows...</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/CIx7LyFGrV0/deferred-shadows.aspx</link><pubDate>Sun, 06 Dec 2009 22:53:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2889</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2889</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/06/deferred-shadows.aspx#comments</comments><description>&lt;p&gt;Yes, it&amp;#39;s still lighting, or is it...!lighting? lol&lt;/p&gt;
&lt;p&gt;Anyway, think I have resolved my deferred shadow mapping issues tonight, well with cone lights at the very least, point light shadows next I think, but think they will be quite expensive. Short clip this one.&lt;/p&gt;
&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;As ever C&amp;amp;C welcome..&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2889" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/CIx7LyFGrV0" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Shadow+Maps/default.aspx">Shadow Maps</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/06/deferred-shadows.aspx</feedburner:origLink></item><item><title>Possibly the last clip of deferred lighting</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/TNhPpPMB63c/possibly-the-last-clip-of-deferred-lighting.aspx</link><pubDate>Thu, 03 Dec 2009 21:25:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2885</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2885</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/03/possibly-the-last-clip-of-deferred-lighting.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;So, have added cone lights and UV maped the city mesh, my dailema now is, do I write up the next programming post, or put the deferred and instancing render down, if I do the latter then I will want to get animated, deferred, instancing done first. If I have time I will also include &lt;a href="http://mquandt.com/blog/2009/12/light-pre-pass-in-xna-basic-implementation/"&gt;Michael&amp;#39;s Light Pre Pass&lt;/a&gt; technique too!&amp;nbsp;Should be an interesting post :) BUT, I have already started the Programming set of posts, so, I am going to do what they do on the X factor&amp;nbsp;and put it to the public vote....&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Would you like to see the next post on Programming or, animated, deferred instancing?&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll give it untill the new year for you to let me know.... &lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2885" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/TNhPpPMB63c" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/03/possibly-the-last-clip-of-deferred-lighting.aspx</feedburner:origLink></item></channel></rss>
