Search  
Tuesday, July 08, 2008 ..:: Mobile RSS ::.. Register  Login
 MSDN: Mobile Developer Center Minimize
News Feed Is Not Available At This Time. Error message:The element data is invalid. Line 31, position 3.


    

 Windows Mobile Team Blog Minimize

The Phone team says "Hello?"
<P>I'd like to share a great photo of the Windows Mobile Phone team enjoying a much needed day off. These guys (and gals) are responsible for Smart Dial, Call History, Speed Dial, Call Progress, Voicemail, Wireless Manager and a whole bunch of phone UI and APIs. They're all hard at work on building a great phone + connectivity experience for the next version of Windows Mobile. (The smiles on their faces are probably indicative of some great new features they've just wrapped up).</P> <P>Introducing the team from L-R: </P> <P>JJ (test), Arturo (test), Darin (dev), Kerry (PM), Robert (dev lead), Howard (dev), Ritu (dev), Kelly (test), Thairu (dev). </P> <P><IMG src="http://farm4.static.flickr.com/3095/2629927774_06112254a3_b.jpg" mce_src="http://farm4.static.flickr.com/3095/2629927774_06112254a3_b.jpg"> </P> <P>So there you have it, folks - your typical Microsoft feature team consisting of dev, test and PM on a hot summer day. I'll try and post pictures of other teams bringing you Windows Mobile. In the mean time, feel free to share comments with the team but please keep it courteous. </P> <P>-Mel</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8679507" width="1" height="1">

Random Thoughts from TechEd 2008
<P>It looks like the topic of TechEd this year evolves around new rendering/layout technologies, like WPF and Silverlight. There are already many ISVs out there selling controls built on top of these new technologies. I was listening to a presentation about Silverlight running on Windows Mobile at TechEd today. At MIX it was announced that we are planning to release Silverlight for Windows Mobile devices and that we will have a technical preview by the end of the year. People were really excited to hear that.</P> <P>I am not one to review devices, but today was a special day. I had the chance to play with the new <A class="" href="http://www.htc.com/www/product.aspx?id=46296" mce_href="http://www.htc.com/www/product.aspx?id=46296">HTC Diamond device</A>. The device was impressive. HTC did a really impressive job on top of Windows Mobile 6.1. The device is slim, high-resolution (640x480), FM receiver, WiFi, bluetooth, touch sensors and some kind of a accelerometer... well, you can get the specs from the website. It is a great mixture of software and platform. In short, the device is <EM>delightful</EM>. </P> <P>Other than that, I will be presenting tomorrow on how to increase the compatibility and usability of your Windows Mobile application. If you are here at TechEd, it would be great to see you.</P> <P>&nbsp;-Luis Cabrera<BR>Windows Mobile Shell SDE</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8576059" width="1" height="1">

Customizing the Sliding Panel Homescreen
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>Hi, my name is Jorge Peraza; I am a Developer on the Windows Mobile team that was responsible for the new “Sliding Panel” home screen in Windows Mobile 6.1.</FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><?xml:namespace prefix = o /><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><FONT size=3><SPAN><FONT face=Calibri>When we were working on the visual style and functionality of the home screen we tried to make something that looked both professional and appealing while still showcasing all the information the user is going to need to know what’s important and requires attention.<SPAN>&nbsp; </SPAN>While I think the default design looks really cool, we added some customization features to enable users to make it their own</FONT></SPAN><SPAN><FONT face=Calibri>.<o:p></o:p></FONT></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><FONT face=Calibri><B><SPAN style="FONT-SIZE: 16pt">Customizing the layout:</SPAN></B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'"><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>&nbsp;<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>The home screen layout can be modified using the same home.xml file from previous versions of WM, the schema of the file was extended to allow the customization of many of its elements, this includes the art assets that are used for most of the plug-ins.<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>When you open the SlidingPanel.home.xml file (inside \ApplicationData\Home) you will find the plug-in element that corresponds to the sliding panel home screen (its CLSID is {E9267CAB-02EE-4f37-8216-6BF6A8FF5A71}).<SPAN>&nbsp; </SPAN>All the child elements inside it are designed to tweak and customize the way the home<SPAN>&nbsp; </SPAN>screen will look. <o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>The top level element is the <B>plugins</B> tag, this has one attribute called “Order” and it’s used to list the plug-ins that will be shown and the order they are going to be laid out on the screen.<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>The built in plug-in names are:<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>CClock – The big clock<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>CAppointments<SPAN>&nbsp; </SPAN>- The calendar plugin<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>3)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>CHome – The notifications plugin<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>4)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>CMyPhotos – The photos plugin<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>5)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>CMessage – The message center (this is off by default on all sliding panel built in layouts.<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>6)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>CMusic – The music plugin<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>7)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>Settings – The settings plug-in<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN><SPAN><FONT face=Calibri size=3>8)</FONT><SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><FONT size=3><FONT face=Calibri>Custom Plugins – Users can<SPAN>&nbsp; </SPAN>specify custom plug-ins with static content that can be displayed on the home screen.<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri><SPAN>&nbsp;</SPAN><o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>For example, the XML snippet bellow moves the photos plug-in to the first position and enables the message center (which is turned off by default on both "Sliding Panel" and "Sliding Panel Media")<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT face=Calibri>&nbsp;<o:p></o:p></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">&lt;</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: rgb(153,0,0); FONT-FAMILY: 'Verdana','sans-serif'">plugin clsid</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">="</SPAN><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">{E9267CAB-02EE-4f37-8216-6BF6A8FF5A71}</SPAN></B><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">"</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: rgb(153,0,0); FONT-FAMILY: 'Verdana','sans-serif'"> name</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">="</SPAN><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">Bronze</SPAN></B><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">"</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: rgb(153,0,0); FONT-FAMILY: 'Verdana','sans-serif'"> height</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">="</SPAN><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'">266</SPAN></B><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">"&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><B><SPAN style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 'Courier New'">&nbsp;</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'"> <SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: rgb(153,0,0)">Plugins</SPAN> <SPAN style="COLOR: rgb(153,0,0)">Order</SPAN><SPAN style="COLOR: blue">="</SPAN><B>CMyPhotos;CClock;CMessage</B><SPAN style="COLOR: blue">" /&gt;</SPAN> </SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman','serif'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">&lt;/</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: rgb(153,0,0); FONT-FAMILY: 'Verdana','sans-serif'">plugin</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">&gt;</SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"></SPAN>&nbsp;</P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"><IMG src="http://ba15tw.bay.livefilestore.com/y1pVnxsUEpKgWE0Toug94vQLaNcJJPH07GPNs_6MUeyyuC4cjns0KQ94Jy_FU4flRKaopnlv88GJV_se5liGrkXrw" mce_src="http://ba15tw.bay.livefilestore.com/y1pVnxsUEpKgWE0Toug94vQLaNcJJPH07GPNs_6MUeyyuC4cjns0KQ94Jy_FU4flRKaopnlv88GJV_se5liGrkXrw"></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"></SPAN>&nbsp;</P><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>There are many other ways of customizing the home screen using the plug-in settings like overriding the default images or even adding your own custom plug-ins that display static content, I'll post and updated entry latter on on how to do this in detail but for now, you can use the provided home.xml files to start experimenting with this.</FONT></FONT></FONT></SPAN></FONT></FONT></FONT></SPAN></P></SPAN> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"></SPAN>&nbsp;</P><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><B><SPAN style="FONT-SIZE: 16pt"><FONT color=#000000><FONT face=Calibri>The notifications plug-in and message center<o:p></o:p></FONT></FONT></SPAN></B></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>In the sliding panel home screen, the notifications plug-in by default serves as a dual-purpose notifications/gateway to all you phone/message accounts where every page represents one account (so, if you have multiple notifications in one category they will be shown as one summary page).<o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>There is however an alternative behavior where individual notifications are added as independent pages (Similar to what the T-Mobile shadow home screen does) and the plug-in only shows accounts that have new notifications in them.<SPAN>&nbsp; </SPAN>One cool feature of this alternate behavior is that each individual notification can be dismissed without having to leave the home screen.<o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" mce_keep="true">&nbsp;</P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><IMG src="http://ba15tw.bay.livefilestore.com/y1pVnxsUEpKgWGDxg7rdBG7CdrFte5NrjHlQ3lqBz60NtP_M_QQkvGGHIHblYLv035jLvoxoTDE-pOb3D8_Y3GT_A" mce_src="http://ba15tw.bay.livefilestore.com/y1pVnxsUEpKgWGDxg7rdBG7CdrFte5NrjHlQ3lqBz60NtP_M_QQkvGGHIHblYLv035jLvoxoTDE-pOb3D8_Y3GT_A"><IMG src="http://ba15tw.bay.livefilestore.com/y1pVnxsUEpKgWHC2uhe3kQHnq92LT9eIjXXXSZdPf5NpDmUmTNaDju3WhS9uhHk16hjpjwpGCduraPCIPnje-VtLQ" mce_src="http://ba15tw.bay.livefilestore.com/y1pVnxsUEpKgWHC2uhe3kQHnq92LT9eIjXXXSZdPf5NpDmUmTNaDju3WhS9uhHk16hjpjwpGCduraPCIPnje-VtLQ"></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" mce_keep="true">&nbsp;</P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>You can enable this alternative behavior by setting the following registry key to a value other than 2 (The actual value indicates how many pages of each notification type will be added to the home screen before collapsing them into a summary page. We have tested 2 and 5 but feel free to experiment with other values) <o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>[HKLM\Software\Microsoft\Chome\Chome]<o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>PageCollapseThreshold: DWORD<o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>Note that this prevents you from being able to access the email/phone account data if there are no notifications for it. If you still want to be able to do that you can always re-enable the message center as described in the previous section as a separate plug-in. <o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><FONT size=3><FONT color=#000000><SPAN><FONT face=Calibri>There is one more behavioral change you can make that allows you to “dock” the condensed view of the first plug-in to the top of the screen when it is not active, we added this for people like me that want to have the clock always visible</FONT></SPAN><SPAN><FONT face=Calibri>. To enable just set the following registry key to “1”<o:p></o:p></FONT></SPAN></FONT></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>[HKLM\Software\Microsoft\Chome]<o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><FONT size=3><FONT color=#000000><FONT face=Calibri>DockOperatorBar: DWORD<o:p></o:p></FONT></FONT></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN><o:p><FONT face=Calibri color=#000000 size=3>&nbsp;</FONT></o:p></SPAN></P><FONT size=3><FONT color=#000000><FONT face=Calibri> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"><B><SPAN style="FONT-SIZE: 16pt; LINE-HEIGHT: 115%"><FONT color=#000000><FONT face=Calibri><SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"><B><SPAN style="FONT-SIZE: 16pt; LINE-HEIGHT: 115%"><FONT color=#000000><FONT face=Calibri>Advanced layout modification</FONT></FONT></SPAN></B></SPAN>:</FONT></FONT></SPAN></B></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt">There are even more advanced things you can do to further tweak the look of the home screen but it is unsupported by Microsoft at this moment so you’ll have to experiment on your own </FONT><SPAN style="FONT-FAMILY: Wingdings"><SPAN>J</SPAN></SPAN><FONT face=Calibri> (Hint, look at the following files \windows\CHome_240x320.cpr and \windows\CHome_320x240.cpr).</FONT></FONT></FONT></P><STRONG><FONT face=Calibri color=#000000></FONT></STRONG><STRONG><FONT face=Calibri color=#000000></FONT></STRONG> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><B><SPAN style="FONT-SIZE: 16pt; COLOR: black; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Important update, please read:</FONT></SPAN></B><SPAN style="FONT-SIZE: 12pt; COLOR: blue; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman','serif'"><o:p><SPAN style="mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT size=3><FONT face=Calibri>Although we're excited to see developers interested in taking advantage of the new home screen, any code samples in this blog post apply only to Windows Mobile 6.1 Standard devices. We do not expect this code to work on previous or future versions of Windows Mobile. Please keep this in mind if you decide to develop plugins for Sliding Panel today.<o:p></o:p></FONT></FONT></SPAN></P></o:p></SPAN><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8572179" width="1" height="1">

SSLChainSaver v2 released
<p>Two years ago I released the <a href="http://blogs.msdn.com/windowsmobile/archive/2006/08/11/sslchainsaver.aspx" target="_blank">first version</a> of the SSLChainSaver tool. This tool helps you diagnose and repair SSL problems on Windows Mobile devices. After a very long delay, <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6123eb55-6590-4643-8e7f-11c177104de2&amp;DisplayLang=en" target="_blank">Version 2</a> is now up on the Microsoft download center. I wasn't able to release the source code this time. The usage instructions are similar to the previous version:</p> <p>From a command prompt, run the tool.</p> <p><font face="Courier New">&gt; sslchainsaver mail.company.com</font></p> <p>This will create a directory called mail.company.com which contains all the certificates from the SSL chain. It will also create files called mail.company.com.wm5.xml and mail.company.com.wm6.xml which can be installed over USB using rapiconfig or <a href="https://blogs.msdn.com:443/windowsmobile/archive/2006/01/28/making_a_root_cert_cab_file.aspx">put in a CAB file</a> for installation on device. </p> <p>New features:</p> <ul> <li>Creates versions of the XML for Windows Mobile 5 and 6. The WM6 version of the XML should always be able to be installed on WM6 devices - it installs certs to the user store so the security policies on the device should never block it. </li> <li>Tries to diagnose many common SSL problems - no root cert sent by the server, common name mismatch, wildcard certs w/ WM5 devices, etc. </li> </ul> <p>Known Issues:</p> <ul> <li>The tool needs to be able to write to the current directory in order to save the files. If you install to \Program Files on Vista and are not running an admin command prompt, it won't be able to write out the certs. Either install it to a directory where you have write access (like Documents) or run from an elevated command prompt. </li> <li>The tool can detect a common name mismatch on the cert but it doesn't parse the &quot;SubjectAltNames&quot; extension. If your certificates are using SubjectAltNames, the tool will report a name mismatch but the certs will really work fine. </li> </ul> <p>&#160;</p> <p>Let me know here if you have any problems with it. I hope it helps you out.</p> <p>&#160;</p> <p>Scott</p><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8518447" width="1" height="1">

Introducing the Windows Mobile Connection
<P>A new site from Microsoft, the <A class="" href="http://www.windowsmobileconnection.com/" target=_blank mce_href="http://www.windowsmobileconnection.com">Windows Mobile Connection</A>, launched today as a new forum destination for anyone who sells mobile phones or works in the mobile industry.</P> <P>Here's a quote from the site's moderator:</P> <BLOCKQUOTE> <P class=MsoPlainText style="MARGIN: 0in 0in 0pt">"I think the Connection is unique: It's all about bringing together the real people behind the retail counters or on the other end of the phone line—the people who sell and support mobile phones, particularly Windows Mobile phones. We just didn't see anywhere on the Web that was specifically built with these people in mind, to help mobile-industry professionals connect with each other, find answers, and talk openly about what matters to them—offering customers great solutions and, ultimately, making the sale.</P> <P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P> <P class=MsoPlainText style="MARGIN: 0in 0in 0pt">"The Windows Mobile Connection tries to be that place—something that's truly by and for sales professionals. We've launched with a discussion forum, photo gallery, and home page news—all built and moderated by technical experts and others who work directly with the Windows Mobile team. In the weeks and months ahead, we plan to add even more great content, and we hope lots and lots of new users will be there to help the Connection grow."</P></BLOCKQUOTE> <P class=MsoPlainText style="MARGIN: 0in 0in 0pt">Any and all mobile-industry professionals are invited to visit the site, sign up, and give it a try. It's completely free, and all you have to do to sign up is provide a Windows Live™ ID. Visit <A href="http://www.windowsmobileconnection.com/">www.windowsmobileconnection.com</A> to get started.</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8447342" width="1" height="1">

Faster C#
<P class=MsoNormal style="MARGIN: 0in 0in 10pt; TEXT-INDENT: 0.5in"><FONT face=Calibri size=3></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Hi everybody, my name is Roshan Khan and I’m a dev working on Windows Mobile at MS. I’ve been working at the Mobile Devices division for the past 18 months. For the majority of my day I’m working in C++<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>and on a few unfortunate occasions assembly. Whenever I get the chance however, I try to push managed code.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>In fact, you may be surprised to know that with Windows Mobile 6.1 we are shipping a feature written entirely in managed code (guess which one!). </FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>While pushing my vigilante managed code agenda I’ve run headfirst into the limitations of the Compact Framework. The CF team did a great job getting ~30% of the functionality into ~10% of the space. And with a little bit of work you can get around many of the obstacles presented by the reduced code! And hopefully this article shows you one or two ways I managed to do this.</FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Today’s lesson is fast bitmap manipulation. Trying to alter pixels on an image is an intensive operation due to the problems associated with accessing managed memory. It’s just plain slow. This won’t be a big concern if all you are doing is drawing an image to a graphics object – but when you want to run a per-pixel filter on an image you quickly hit a performance bottleneck. <BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break"></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>For this tutorial lets create a few classes that will let us invert the pixels on an image. The first thing we need to do is create a faster bitmap class. I’m going to make a class called <B style="mso-bidi-font-weight: normal">FastBitmap</B>, but I can’t subclass from Bitmap since it’s sealed. Oh no! Relax … we can fix this. Let’s create a class that contains a member variable that is a bitmap.</FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">FastBitmap<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: #2b91af">Bitmap</SPAN> image;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>But with this we won’t be able to pass in our <B style="mso-bidi-font-weight: normal">FastBitmap</B> into methods that accept Bitmaps – this is going to be a problem. One way to solve this is to simply pass in FastBitmap.image into the places that want a Bitmap, but this is a suboptimal solution. Instead let’s use the power of implicit casting! </FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">implicit</SPAN> <SPAN style="COLOR: blue">operator</SPAN> <SPAN style="COLOR: #2b91af">Image</SPAN>(<SPAN style="COLOR: #2b91af">FastBitmap</SPAN> bmp)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> bmp.image;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">implicit</SPAN> <SPAN style="COLOR: blue">operator</SPAN> <SPAN style="COLOR: #2b91af">Bitmap</SPAN>(<SPAN style="COLOR: #2b91af">FastBitmap</SPAN> bmp)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> bmp.image;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><FONT face=Calibri size=3>With this code we can now cast a <B style="mso-bidi-font-weight: normal">FastBitmap</B> object to an Image or Bitmap object on the fly. This helps especially when plugging the <B style="mso-bidi-font-weight: normal">FastBitmap</B> class into an existing application that is already using Bitmaps.</FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><FONT face=Calibri size=3>But we still haven’t solved our performance problems. How do we quickly manipulate the pixels on an image? Simple – lock the pixels in memory so we can access them quickly and in a contiguous fashion. This is done via the <B style="mso-bidi-font-weight: normal">LockBits</B> method. I’m going to add the following methods to our <B style="mso-bidi-font-weight: normal">FastBitmap</B> class that allow us to put the managed pixel data into a format that is better suited for direct manipulation.</FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> LockPixels()<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>LockPixels(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Rectangle</SPAN>(0, 0, image.Width, image.Height));<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">void</SPAN> LockPixels(<SPAN style="COLOR: #2b91af">Rectangle</SPAN> area)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (locked)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>locked = <SPAN style="COLOR: blue">true</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>bitmapData = image.LockBits(area, <SPAN style="COLOR: #2b91af">ImageLockMode</SPAN>.ReadWrite,<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">PixelFormat</SPAN>.Format24bppRgb);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">IntPtr</SPAN> ptr = bitmapData.Scan0;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> stride = bitmapData.Stride;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> numBytes = image.Width * image.Height * 3;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rgbValues = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">byte</SPAN>[numBytes];<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Marshal</SPAN>.Copy(ptr, rgbValues, 0, numBytes);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> UnlockPixels()<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (!locked)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>locked = <SPAN style="COLOR: blue">false</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt 1.5in; TEXT-INDENT: -0.5in; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Marshal</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">.Copy(rgbValues, 0, bitmapData.Scan0, image.Width * image.Height * 3);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>image.UnlockBits(bitmapData);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>locked = <SPAN style="COLOR: blue">false</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><FONT face=Calibri size=3>By calling lock pixels we can copy the pixel data from memory into an array that we will manipulate later on. When we call <B style="mso-bidi-font-weight: normal">UnlockPixels</B> we dump this entire array back into our managed image in one atomic operation.</FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><FONT face=Calibri size=3>I’m going to ahead a few more methods to our <B style="mso-bidi-font-weight: normal">FastBitmap</B> class for ease of use. Here’s the completed class.</FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">FastBitmap<o:p></o:p></SPAN></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: #2b91af">Bitmap</SPAN> image;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: #2b91af">BitmapData</SPAN> bitmapData;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">int</SPAN> height;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">int</SPAN> width;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">byte</SPAN>[] rgbValues;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">bool</SPAN> locked = <SPAN style="COLOR: blue">false</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">int</SPAN> Height<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">get<o:p></o:p></SPAN></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> <SPAN style="COLOR: blue">this</SPAN>.height;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">int</SPAN> Width<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">get<o:p></o:p></SPAN></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> <SPAN style="COLOR: blue">this</SPAN>.width;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> FastBitmap(<SPAN style="COLOR: blue">int</SPAN> x, <SPAN style="COLOR: blue">int</SPAN> y)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>width = x;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>height = y;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>image = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Bitmap</SPAN>(x, y);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">byte</SPAN>[] GetAllPixels()<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> rgbValues;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> SetAllPixels(<SPAN style="COLOR: blue">byte</SPAN>[] pixels)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rgbValues = pixels;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: #2b91af">Color</SPAN> GetPixel(<SPAN style="COLOR: blue">int</SPAN> x, <SPAN style="COLOR: blue">int</SPAN> y)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> blue = rgbValues[(y * image.Width + x) * 3];<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> green = rgbValues[(y * image.Width + x) * 3 + 1];<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> red = rgbValues[(y * image.Width + x) * 3 + 2];<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> <SPAN style="COLOR: #2b91af">Color</SPAN>.FromArgb(red, green, blue);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> SetPixel(<SPAN style="COLOR: blue">int</SPAN> x, <SPAN style="COLOR: blue">int</SPAN> y, <SPAN style="COLOR: #2b91af">Color</SPAN> cIn)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rgbValues[(y * image.Width + x) * 3] = cIn.B;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rgbValues[(y * image.Width + x) * 3 + 1] = cIn.G;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rgbValues[(y * image.Width + x) * 3 + 2] = cIn.R;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">implicit</SPAN> <SPAN style="COLOR: blue">operator</SPAN> <SPAN style="COLOR: #2b91af">Image</SPAN>(<SPAN style="COLOR: #2b91af">FastBitmap</SPAN> bmp)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> bmp.image;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">implicit</SPAN> <SPAN style="COLOR: blue">operator</SPAN> <SPAN style="COLOR: #2b91af">Bitmap</SPAN>(<SPAN style="COLOR: #2b91af">FastBitmap</SPAN> bmp)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> bmp.image;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> LockPixels()<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>LockPixels(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Rectangle</SPAN>(0, 0, image.Width, image.Height));<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">void</SPAN> LockPixels(<SPAN style="COLOR: #2b91af">Rectangle</SPAN> area)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (locked)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>locked = <SPAN style="COLOR: blue">true</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>bitmapData = image.LockBits(area, <SPAN style="COLOR: #2b91af">ImageLockMode</SPAN>.ReadWrite,<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">PixelFormat</SPAN>.Format24bppRgb);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">IntPtr</SPAN> ptr = bitmapData.Scan0;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> stride = bitmapData.Stride;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> numBytes = image.Width * image.Height * 3;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>rgbValues = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">byte</SPAN>[numBytes];<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Marshal</SPAN>.Copy(ptr, rgbValues, 0, numBytes);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> UnlockPixels()<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (!locked)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>locked = <SPAN style="COLOR: blue">false</SPAN>;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Marshal</SPAN>.Copy(rgbValues, 0, bitmapData.Scan0, image.Width * image.Height * 3);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>image.UnlockBits(bitmapData);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><FONT face=Calibri size=3>With the class completed we can move on to the inversion algorithm. This part is actually quite simple. </FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> DoFilter(<SPAN style="COLOR: #2b91af">FastBitmap</SPAN> image)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>image.LockPixels();<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">byte</SPAN>[] pixels = image.GetAllPixels();<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; pixels.Length; i++)<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>pixels[i] = (<SPAN style="COLOR: blue">byte</SPAN>)(255 - pixels[i]);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>image.SetAllPixels(pixels);<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>image.UnlockPixels();<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><FONT size=3><FONT face=Calibri>Now we have an algorithm that in union with our <B style="mso-bidi-font-weight: normal">FastBitmap</B> class can invert a 320x240 image nearly instantly on a mobile device. <SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p></o:p></SPAN></FONT></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Thanks for reading. Let me know what you thought about this by leaving a comment!</FONT></P> <P>[Author:Roshan Khan]</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8398020" width="1" height="1">

Video: Demos of cool new Windows Mobile 6.1 features
<P><A href="http://www.windowsmobile.com/" target=_blank mce_href="http://www.windowsmobile.com">Windows Mobile 6.1</A> was just announced at CTIA yesterday. A bunch of us got together to record a video demoing most of the new features in Windows Mobile 6.1. Check out this 40-minute video that shows:</P> <UL> <LI>Cool devices, including the T-Mobile Shadow, HTC Tilt, Pantech Duo, Moto Q9</LI> <LI>The new Sliding Panel home screen (aka "Bronze")</LI> <LI>All new home screen plugins</LI> <LI>Threaded SMS</LI> <LI>Copy &amp; Paste support for non-touch devices</LI> <LI>New Task Manager</LI> <LI>Clock &amp; Alarms</LI> <LI>Windows Live and Live Search Mobile</LI> <LI>and more...</LI></UL> <P>This is a long video but it shows several features in great detail that you may not see elsewhere. Also note, there are other improvements in Windows Mobile 6.1 that we don't cover in this video, including IEMobile's new Zoom feature and integration with <A href="http://www.microsoft.com/systemcenter/mobile/default.mspx" target=_blank mce_href="http://www.microsoft.com/systemcenter/mobile/default.mspx">SCMDM 2008</A>.</P> <P>-Mel Sampat</P> <DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; DISPLAY: inline" id=scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e8c6a1ac-4e0f-4dff-b80e-c2d4ea1a2160 class=wlWriterSmartContent> <DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; DISPLAY: inline" id=0edba95b-8c3f-4128-acde-9bb2ab445ff0> <DIV><A href="http://video.msn.com/video.aspx?vid=44589ab6-7674-4730-8fb0-ea730631fd77&amp;from=writer" target=_new mce_href="http://video.msn.com/video.aspx?vid=44589ab6-7674-4730-8fb0-ea730631fd77&amp;from=writer"><IMG alt="" src="http://blogs.msdn.com/blogfiles/windowsmobile/WindowsLiveWriter/VideoDemosofcoolnewWindowsMobi.1features_D49/video56f8e368d768.jpg" onload="var downlevelDiv = document.getElementById('0edba95b-8c3f-4128-acde-9bb2ab445ff0'); downlevelDiv.innerHTML = &quot;<div><embed src=\&quot;http://images.video.msn.com/flash/soapbox1_1.swf\&quot; quality=\&quot;high\&quot; width=\&quot;432\&quot; height=\&quot;364\&quot; wmode=\&quot;transparent\&quot; type=\&quot;application/x-shockwave-flash\&quot; pluginspage=\&quot;http://macromedia.com/go/getflashplayer\&quot; flashvars=\&quot;c=v&amp;v=44589ab6-7674-4730-8fb0-ea730631fd77&amp;from=writer\&quot; ><\/embed><\/div>&quot;;" galleryimg="no" mce_src="http://blogs.msdn.com/blogfiles/windowsmobile/WindowsLiveWriter/VideoDemosofcoolnewWindowsMobi.1features_D49/video56f8e368d768.jpg"></A></DIV></DIV><LABEL style="FONT-SIZE: 0.8em">Windows Mobile 6.1</LABEL></DIV><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8347584" width="1" height="1">

Announcing Windows Mobile 6.1
<p><img alt="Windows Mobile 6.1 screenshot" src="http://photos-a.ak.facebook.com/photos-ak-sf2p/v199/116/69/8195378771/n8195378771_439296_1376.jpg" /> </p> <p>This morning Microsoft <a href="http://www.microsoft.com/presspass/press/2008/apr08/04-01WM61PR.mspx">officially announced Windows Mobile 6.1</a> and an upgrade for Internet Explorer Mobile. Windows Mobile 6.1 will start showing up in devices very very soon, and the IEMobile update will be available later this year.</p> <p>Windows Mobile 6.1 includes a slew of new features and improvements, including a redesigned home screen, built-in Task Manager, threaded SMS client, browser improvements, Copy &amp; Paste support for non-touch devices, integration with <a href="http://www.microsoft.com/systemcenter/mobile/default.mspx">SCMDM 2008</a>, improved Windows Live integration, Getting Started Wizard, faster Bluetooth setup, significant and noticeable improvements in performance and battery life, and much more.</p> <p>Upgrades for several current devices will be available. From the press announcement linked above, the following new phones and updates were announced today:</p> <p><strong>Mobile operators:</strong></p> <ul> <li>Alltel Wireless: HTC PPC6800, HTC Touch</li> <li>AT&amp;T: Samsung BlackJack II, MOTO Q 9h global, Pantech duo, AT&amp;T Tilt by HTC</li> <li>Sprint: A new Palm Treo and updates for the Mogul by HTC, Touch by HTC, MOTO Q 9c, Samsung ACE </li> <li>T-Mobile International: T-Mobile MDA Ameo 16 GB, T-Mobile MDA compact IV</li> </ul> <p><strong>Device-makers:</strong></p> <ul> <li>ASUS: New phones including the P320, ZX1, P560, M536 and updates for the P527, P750, M930</li> <li>HTC: A new Touch Dual for the U.S. and updates for the AT&amp;T Tilt, Touch by HTC, Mogul by HTC from Sprint, TyTN II</li> <li>i-mate: 8502, 9502, 8150, 6150</li> <li>Intermec: CN3</li> <li>Motorola: MOTO Q 9c, MOTO Q 9h global, MC70, MC9000</li> <li>Pantech: Pantech duo</li> <li>Samsung: BlackJack II</li> <li>Toshiba: Port&#233;g&#233; G810,Port&#233;g&#233; G910</li> </ul> <p>For more screenshots, please visit the <a href="http://www.facebook.com/pages/Windows-Mobile/8195378771">Windows Mobile page on Facebook</a>. We'll post even more information about Windows Mobile 6.1 on this blog shortly. </p> <p>-Mel Sampat</p><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8348669" width="1" height="1">

MSFT heart Windows Mobile
<P>Everyone I know at Microsoft uses a Windows Mobile phone (well, except for 2 people...one is a&nbsp;guy that works in the Mac Unit and the other is Bill Gates who doesn't use a cell phone). Microsoft employees are often the first customers of our product. To see just how passionate they can be, check out this video clip. It's from an annual employee event called "TechReady", which is attended by our field staff from all around the world. </P> <P>This clip shows the popular "mobility smackdown" session hosted by <A href="http://blogs.msdn.com/jasonlan/archive/2008/03/19/windows-mobile-smackdown.aspx" target=_blank mce_href="http://blogs.msdn.com/jasonlan/archive/2008/03/19/windows-mobile-smackdown.aspx">Jason Langridge</A>. It continues to be the most popular event at TechReady year after year. </P> <P>The passion you see in this video translates into vocal and critical feedback throughout our internal testing cycles, also known as "dogfooding".</P> <P><IFRAME height=325 src="http://channel8.msdn.com/Posts/3768/player/" frameBorder=0 width=320 scrolling=no mce_src="http://channel8.msdn.com/Posts/3768/player/"></IFRAME><BR><A href="http://channel8.msdn.com/Posts/3768/" mce_href="http://channel8.msdn.com/Posts/3768/">Windows Mobility Smackdown at TechReady 6</A></P> <P>-Mel</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8333173" width="1" height="1">

Free Professional Development Tools for Students
<P><IMG style="WIDTH: 303px; HEIGHT: 70px" height=70 src="http://mschnlnine.vo.llnwd.net/d1/App_Themes/Channel8/images/DreamSparkBanner.png" width=303 align=middle mce_src="http://mschnlnine.vo.llnwd.net/d1/App_Themes/Channel8/images/DreamSparkBanner.png">&nbsp;</P> <P>A few years ago when I was getting my Bachelor's Degree I decided to learn how to write code for mobile devices (I had Compaq Ipaq at that time that was running Pocket PC 2003 version of the software). I downloaded eVC 4 and wrote my first little program for my device. It was an exciting time! As a student I did not have much disposable income, so it was nice to know that eVC was free.</P> <P>If you have not heard about it, Microsoft just started a new program to allow students to get Free Professional level Development Tools. The program is called Microsoft Dreamspark. If you are are a student, you can go to <A href="https://downloads.channel8.msdn.com/" mce_href="https://downloads.channel8.msdn.com/">https://downloads.channel8.msdn.com/</A>&nbsp;and download tools like Microsoft Visual Studio 2008 Professional Edition or Microsoft Expression Studio at no charge! </P> <P>Enjoy!</P> <P>Luis Cabrera</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8329526" width="1" height="1">

The new Windows Mobile Line of Business Solution Accelerator
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">We're really excited to announce that the new Windows Mobile Line of Business Solution Accelerator 2008&nbsp;has been released to the web and can be found here </SPAN><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt"><A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;displaylang=en"><SPAN style="mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT color=#0000ff>http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;displaylang=en</FONT></SPAN></A></SPAN><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"> at the Microsoft Downloads site.&nbsp; Having the best mobile development platform and tools is more important now than it’s ever been before and that’s why we’ve delivered this new Accelerator to empower our developer community to do their best work on the Windows Mobile platform.&nbsp; Highlights of the Accelerator are listed below:</SPAN><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><B><SPAN style="FONT-SIZE: 15pt; mso-bidi-font-size: 16.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><FONT face=Calibri>The Microsoft® Windows Mobile Line of Business Solution Accelerator 2008<o:p></o:p></FONT></SPAN></B></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Delivering new innovations and development best practices to the Windows Mobile platform with Visual Studio 2008, the .NET Compact Framework 3.5, SQL Server Compact 3.5, a working Supply Chain application, over 5,000 lines of commented code plus over a hundred pages of helpful documentation.</SPAN><SPAN style="mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri><B><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Adapt your App ::</SPAN></B><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"> Create a single binary that runs unchanged on Windows Mobile Standard or Pro, Portrait or Landscape, Rectangle or Square.&nbsp; No more wasting time building separate executables to accommodate different screen sizes or input methods.<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"><o:p>&nbsp;</o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri><B><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">Sync Services for ADO.NET ::</SPAN></B><SPAN style="FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"> Synchronize your data between SQL Server 2008 and SQL Server Compact 3.5 using the new Sync Framework.&nbsp; Keep all your occasionally-connected mobile workers on the same page.<o:p></o:p></SPAN></FONT></P> <P class=M