Wednesday, May 09, 2007

Check out this hilarious prank on IPhone that Microsoft put together...

I was laughing so loud that people from the other offices came to see at what I was laughing at.

 

 

5/9/2007 9:59:54 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0]  | 
 Friday, April 27, 2007

No, this is not what you think this is. This is a proof of a concept .Net CF v2 program that I've put together during my 2 train rides home and to work. And yes, the button does slide. The code is pretty simple. It just draws the images in the right places with transparency. The transparency is achieved by using AlphaBlend API function that's become available in Windows CE 5.0. I think this proves that the UI's that we can create in CF are not limited to the usage of a standard controls. With enough creativity we can spice up our applications with this kind of eye candy.

You can download the project from here:

AlphaDrawingPOC.zip (696.29 KB)
4/27/2007 2:54:37 PM (GMT Daylight Time, UTC+01:00)  #    Comments [3]  | 
 Friday, March 23, 2007

The ‘Gestures’ paradigm was introduced a few years ago for internet browsers and became quite popular. Tablet PC platform also recently added ‘gestures’ recognition to its arsenal. But I always thought that this functionality could be really valuable for the Pocket PC platform as well: it has a touch screen, limited screen space and is a perfect candidate for improving user interoperability of our applications. So, how can we implement the ‘gestures’ in NET CF? vbAccellerator has had this whitepaper explaining how it could be done for .NET.  He implements the IMessageFilter to hook up into application’s message loop and catch all mouse messages. When the ‘MouseDown’ message is received he starts collecting the mouse coordinates and on ‘MouseUp’ would stop collecting and interpret the collected data. I’ve ported this code to NET CF utilizing the Application2 functionality from the SDF v2. Here is the screen shot of the sample application:

This code implements recognition of a very simple gestures like moving up or down, left or right, left and then up etc… If you want to implement recognition of more complex gestures, you would need to resort to more sophisticated methods like neural networks. Codeproject.com has a few interesting articles on this subject. Many of these could be easily ported to CF.

But even having been able to recognize the gestures provided by this implementation can add a lot more usability to your Pocket PC applications. Move your stylus to the right and you can switch to the next screen. ‘Down’ – and you can scroll the form or the ListBox or Grid etc…

GesturesCF.zip (14.21 KB)
3/23/2007 1:33:50 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
 Wednesday, March 07, 2007

One of the recent question that came up on the forums on how to extract icon from an exe file in CF. The ExtractIconEx is available on Windows CE platform as well as desktop, so I went to http://www.pinvoke.net/, copied the code from here, removed unneeded 'unsafe' statements and modified the PInvoke declarations to use coredll.dll:

public static Icon ExtractIconFromExe(string file, bool large)

{           

       int readIconCount = 0;

       IntPtr[] hDummy = new IntPtr[1] { IntPtr.Zero };

       IntPtr[] hIconEx = new IntPtr[1] { IntPtr.Zero };

 

       try

       {

          if (large)

               readIconCount = ExtractIconEx(file, 0, hIconEx, hDummy, 1);

          else

               readIconCount = ExtractIconEx(file, 0, hDummy, hIconEx, 1);

 

          if (readIconCount > 0 && hIconEx[0] != IntPtr.Zero)

          {

             // GET FIRST EXTRACTED ICON

             Icon extractedIcon = (Icon)Icon.FromHandle(hIconEx[0]).Clone();

             return extractedIcon;

          }

          else // NO ICONS READ

             return null;

       }

       catch (Exception ex)

       {

           /* EXTRACT ICON ERROR */

           // BUBBLE UP

           throw new ApplicationException("Could not extract icon", ex);

       }

       finally

       {

           // RELEASE RESOURCES

           foreach (IntPtr ptr in hIconEx)

              if (ptr != IntPtr.Zero)

                   DestroyIcon(ptr);

                   foreach (IntPtr ptr in hDummy)

                        if (ptr != IntPtr.Zero)

                            DestroyIcon(ptr);

       }

           

}

 

 

 

[DllImport("coredll.dll")]

static extern int ExtractIconEx(string szFileName, int nIconIndex,

  IntPtr[] phiconLarge, IntPtr[] phiconSmall, uint nIcons);

 

[DllImport("coredll.dll", EntryPoint = "DestroyIcon", SetLastError = true)]

private static  extern int DestroyIcon(IntPtr hIcon);

 

 The followup question was how to display the Icon in the PictureBox, so here it the quick solution for it too:

public Bitmap GetBitmap(Icon icon)

{

     Bitmap bmp = new Bitmap(icon.Width, icon.Height);

     //Create temporary graphics

     Graphics gxMem = Graphics.FromImage(bmp);

     //Draw the icon

     gxMem.DrawIcon(icon, 0, 0);

     //Clean up

     gxMem.Dispose();

     return bmp;

 }

3/7/2007 2:07:09 PM (GMT Standard Time, UTC+00:00)  #    Comments [2]  | 

Yeah.... it's been a while I posted on this blog. I've been submerged into a very time demanding, but incredibly interesting project which involved quite a wide range of technologies, like Outlook 2007, Exchange 2007, Sharepoint 2007 and of course a Windows Mobile piece. You can see a glimpse of the project in the video that was created for Microsoft Launch events in January:

http://www.infusiondev.com/news/CaseStudies.htm

It's the first case study on the page.

3/7/2007 1:53:07 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
 Sunday, November 05, 2006

Microsoft recently have made the Windows Mobile Network Analyzer available for download. It's a Power Toy that runs on a device and can be used for troubleshooting network connectivity issues. It includes utilities such as ping and ipconfig as well as captures network traffic to a .cap file which you can later view with Network Monitor tool or the Ethereal tool.

11/5/2006 4:51:50 PM (GMT Standard Time, UTC+00:00)  #    Comments [2]  | 
 Monday, October 30, 2006

Ah.. yes, the WCF (Indigo) will be available in the new version of the .NET Compact Framework! Read this blog by Roman to get the latest scoop. And yes, they do listen ;)

 

10/30/2006 10:42:54 PM (GMT Standard Time, UTC+00:00)  #    Comments [1]  | 
 Thursday, October 12, 2006

We have released the PopupMenu Component that I'd described before. See this page on where and how you can get it.

10/12/2006 5:45:17 PM (GMT Daylight Time, UTC+01:00)  #     |