Wednesday, June 11, 2008

I mentioned to the group that I would post the Prize Picker application we wrote together on my blog as part of my 30 Days of .NET series. I think this was an awesome idea, and it looked like everyone really enjoyed themselves. Hopefully, a few of them will see this post and share their thoughts as well. It was very nice to have a hands on type presentation that everyone got to participate in together. And since only one person was “driving” we didn’t have to stop and fix a disconnected monitor. Ok, we did one time, but just one time. Open-mouthed 

Big thanks to everyone that came out and participated! Page Brooks, Donny Craft, Benton Little, , Jamey McElveen , Shawn Morris, and Thad Smith. It was a lot of fun!

 

PrizePicker

Prize Picker

There is probably someone out there who doesn’t think this is the best looking application ever. Well, you’re right! It’s not, but we didn’t really focus on that any until we had a fully functional application. At that point it was time to pick prizes for the lucky hopefuls that became winners at the event.

The only big item we didn’t implement, was an item that came up right at the end, we wanted to show the last winner in the area down at the bottom of the screen in big blog letters. And we wanted to rotate through remaining hopefuls and then finally pick a winner moving them to the winners table.

The application is a firm believer of the KISS principle. We did the entire application in about an hour and a half. And that is including some refactorings, and changes we made along the way. I’m pretty happy with the application, and will love it once we have the “Jackpot” style UI element added.

We added validation as we needed it, and decided to keep the applications logic in the UI, as hard as it was for us to do, to in this case to follow our KISS guidelines.

We have used RNGCryptoServiceProvider class already in the Pocket PasswordGen application on day six. This class makes sure that our random numbers are statistically random and not pretend watered down random.

   1: Byte[] randomBytes = new byte[4];
   2:  
   3: RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
   4: rng.GetBytes(randomBytes);
   5:  
   6: // Convert 4 bytes into a 32-bit integer value.
   7: int seed = (randomBytes[0] & 0x7f) << 24 |
   8:             randomBytes[1] << 16 |
   9:             randomBytes[2] << 8 |
  10:             randomBytes[3];
  11:  
  12: int pick = seed % listViewHopefuls.Items.Count;

 

Download executable: prizePicker.cab

Download Source Code: prizePicker.zip

Feedback

The cool thing is we used this application to actually pick the winners for the prizes, and everything went great. So our intention is to keep using it from now. We are also going to post it on CodePlex soon and allow others to work on it as well.


Wednesday, June 11, 2008 02:55:00 (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Wow, today was a busy day. I gave a Windows Mobile Programming presentation today at a .NET user group I help run, PDANUG. I changed it up at the very last minute, and instead of doing the presentation I was planing on doing we wrote a Windows Mobile application together. It was great. I think everyone contributed, and got something out of it. In the end we had a very nice Prize Picker application that we will be able to use again and again in the future. And I have a new talk that I can present. Any takers?

 

image

What is My IP?

You may have seen sites like WhatIsMyIP.com, IPChicken.com, and my favorite IPCow.com. Most people prefer command prompt and good ole IPConfig. But sometimes when you are troubleshooting an issue with a friend of family member over the phone that’s not always the best idea. Usually in those kind of situations it is easier to send someone to a Web site and just have them read the value to you. I think some of the sites above will render appropriately on a mobile device, pretty sure IPCow.com does.

But what if you can’t connect to the Internet, and you need to see your Intranet IP address. In this case, and many others, one wants something a little more direct, and clear.

For this reason, “What is My IP?” exists. It couldn’t be simpler. Run the program, then see your IP address, or IP addresses in case you have multiple connections open. Which is very possible with today’s devices, with everything from Bluetooth, cellular connections, wireless connections, and more.

This application only does one thing, so it needs to do it very well. And it needs to be appealing in how it looks and how it does it.

Since the application has minimal features, it has a minimalist style to it. There is only one focus point of attention and that is the large network icon in the center of the screen. Everything else is clean and simple.

There’s only one method of note in this application: RefreshData()

   1: private void RefreshData()
   2: {
   3:     string deviceName = System.Net.Dns.GetHostName();
   4:  
   5:     textBoxDeviceName.Text = deviceName;
   6:  
   7:     IPAddress[] addresses = Dns.GetHostEntry(deviceName).AddressList;
   8:  
   9:     comboBoxDeviceIP.Items.Clear();
  10:     for (int i = 0; i < addresses.Length; i++)
  11:         comboBoxDeviceIP.Items.Add(addresses[i].ToString());
  12:  
  13:     if (comboBoxDeviceIP.Items.Count > 0)
  14:         comboBoxDeviceIP.SelectedIndex = 0;
  15: }

Download executable: whatIsMyIP.cab

Download Source Code: whatIsMyIP.zip

Feedback

Not bad 10 applications in 10 days. Won’t be long before we’re at 20 applications in 20 days, and then 30 applications in 30 days. Keep the feedback coming.


Wednesday, June 11, 2008 02:14:00 (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Tuesday, June 10, 2008

Tuesday, June 10th, 2008image
Chris Craft

Topic: Windows Mobile Programming

Tuesday, June 10th, 2008, is the next meeting of the Pee Dee Area .NET User Group.

Chris Craft will be presenting at Microsoft Mobility Roadshow alongside Brian Hitney, Glen Gordon, and Lou Vega in Charlotte - June 18, 2008 and Atlanta (Alpharetta) - June 24, 2008. These are full day Windows Mobile device application development events.  PDANUG will be hosting our own special "Welcome to the World of Windows Mobile" event to keep in theme these two MSDN events.
Focus will be Windows Mobile 6.x and using Visual Studio 2008 to developer mobile applications.
Topics to be covered:

  •       Intro to Windows Mobile
  •       Data Guidance (some discussion of line of business applications)
  •       Whole New Level
Speaker Bio
Chris Craft
Pee Dee Area .NET User Group
Florence, SC      
•    Microsoft Windows Mobile Device Application Development MVP
•    Cofounder and regular speaker of Pee Dee Area .NET User Group.
•    Frequent CodeProject.com article author.
•    Expert's Exchange Windows Mobile Programming Master.
Email: ccraft@pdanug.net
Web: http://pdanug.net/
Blog: http://cjcraft.com/blog/


Here is the tentative schedule:
6:00 PM - 6:20 PM Socializing / Free Dinner
6:20 PM - 6:30 PM Introduction, Sponsor Time, and News.
6:30 PM - 8:00 PM Presentations


Tuesday, June 10, 2008 11:52:00 (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Microsoft has published a SKU Matrix for Windows Mobile 6.1, and there is also an older one for Windows Mobile 5.0.

imageWindows Mobile 6.1 makes it easier to stay connected and manage your busy life—from just about anywhere. Windows Mobile 6.1 is full of enhancements, made with your needs in mind. Think about this: When you text with a friend, the messages thread together, just like instant messaging—no more confusion about what you’re talking about. Connecting to a Wi-Fi network is now simpler—no more scrolling through multiple pages; a single click and you’re connected. And Windows Mobile 6.1 runs on a growing variety of phones, including touch screen devices with slide-out keyboards, sleek full-keyboard smartphones, and compact flip phones.


Tuesday, June 10, 2008 09:46:43 (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback

Today's application is meant to be a simple, yet useful, application for people to use out on the town. This is an application that a couple of my friends recommended as a good beginner's introduction application to programming for the .NET Compact Framework. One thing I really like about it is that there is nothing to get in the way of a new developer's understanding of what is going on in this application. Everything is direct and straight-forward.

If you have ever eaten out with a large group of friends and wanted to split the tip, then you probably know how much of a challenge this can be. It seems trivial at first glance, but there is a decent set of variable inputs, and another good size set of outputs. All of which are interrelated. But that is the past, now you have Mobile Tipper to take care of the hard work for you.

 

image

Mobile Tipper

There's not a whole lot going on with the UI. It is still clean and simple. I have colored the output fields in a light yellow color, and I have added an icon to the top right of the screen for decoration. Also, notice we are formatting our outputs, and allowing users to enter '%' and '$' characters in the inputs. This is a nice touch of polish that users appreciate. The icon in the top right is also the icon for the applications and the forms themselves. (I couldn't take it; I decided to give the application, a famous light blue color to give it a little life.)

 

There's a lot of fields, and this is technically a mobile data entry application. So we want to enable our users to enter data as easily as possible. That's why we are using editable comboboxes, and allowing users to enter '%' and '&' characters. The comboboxes are pre-populated with a likely set of inputs users will want to use.

imageOne thing I did also to help with data entry is I assign tab orders to all my input controls, and marked all my output controls TabStop properties as false so they would be skipped over.

I implemented a Tip class that handles all the math calculations, and so on. And I created NumericTextBoxes and NumericComboBoxes that only allow numeric data to be entered. Again try to make end users lives easier.

You might be wondering what my secret is to handling the character's '%' and '$', it is the trusty String.Replace() method. I replace both of those characters with String.Empty's. :D

     return Decimal.Parse(this.Text.Replace("$", string.Empty).Replace("%", string.Empty));

I came close to skinning this application with some kind of butler them skin. Basically a white and black theme with a little bowtie band somewhere across the top, or middle with a watermarked jacket front in the application form's background. But decided it probably wouldn't end up looking like it does in my head.

 

 

 

 

Download executable: mobileTipper.cab

Download Source Code: mobileTipper.zip

Feedback

Tomorrow will be our tenth application, and mark us at 1/3 complete. So far I have managed to design, create, publish, and explain a new and different .NET Compact Framework application everyday. My goal is to do it everyday this month. Your support really makes a difference so keep it coming!


Tuesday, June 10, 2008 00:18:51 (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, June 09, 2008

Wow, time sure does fly when you're having fun. Since the beginning of the June, we have already knocked out over a half-a-dozen applications. It's hard for me to choose a favorite, as there is such variety, and many of you submitted great application ideas. If I had to pick a favorite, I think I would pick Mobile FX, since it is just fun.

What's your favorite?

 

image image image image
Minutes to Midnight Countdown Bluetooth Manager GPS Compass Mileage Tracker

Look at the variety: a countdown time, a Bluetooth control panel type application, a GPS application, and a work utility.

 

image image image image
Mobile Capture Pocket PasswordGen Mobile FX What will be next?

 

Again, we get around as far as application topics: screen shot utility, password generator, a sound FX app, and who know's what we'll do next...

Looking forward to this week's applications? Let's see where we'll go next.


Monday, June 09, 2008 10:08:06 (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback

image Wow, things are really moving around here. First Lou Vega offers to help with 30 Days of .NET as the VB .NET Editor. And now Christopher Fairbairn has offered to help as the C++ Editor.

A little about Christopher:

Christopher is the leader of the Christchurch .NET User Group. In case you didn't already know, Christchurch is in New Zealand. (Pretty cool reading about their climate, and I didn't realize they are know as the "Gateway to the Antarctic"). Christopher has a great blog mostly focused on Windows Mobile C++ development, which can be hard to find good information on when you are first starting out. Be sure to take a moment and read Christopher's "About Me" page. I think you'll agree that we are lucky to have him on the team, and that we are looking forward to seeing take on device application development for Windows Mobile.

 

So far, Christopher is off to a great start having already reproduced two of the applications I have written. One of the thing I really enjoy is reading the blog post Christopher does for application he translates. He a great job of explaining the nuts and bolts of everything that he is doing. He is very detailed and very thorough, you can learn a lot simply following along with him

Day 01 - 30 Days of .NET [Windows Mobile Applications]: Minutes to Midnight Countdown: C# Edition / C++ Edition

Day 02 - 30 Days of .NET [Windows Mobile Applications]: Bluetooth Manager: C# Edition / C++ Edition


Monday, June 09, 2008 02:44:39 (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

We have discussed the ability to assign an Windows Mobile application we have created to a device's hardware button. Once with our day two application, Bluetooth Manager, and once again with our day eight application, Rotate Me.

By default my device's buttons are configured as follows: "Button 1" starts "Internet Explorer", "Button 2" starts "Messaging", "Button 3" starts the "<Start Menu>", "Button 4" starts "<OK/Close>", and finally "Button 5" starts the "<Camera>". If you look at the screenshots below, you'll noticed I changed "Button 2" to start the "Rotate Me" application instead. This is the "as good as it gets" way to start an application; doesn't get better than one button press access.

Just in case everyone isn't aware of the feature in Windows Mobile, I've posted the steps here:

First click the "<Start Menu>", now click on "Settings" menu item, next click on the "Buttons" icon under the "Personal" tab, finally select a button and assign it a program. It's that easy.

image image image image


Monday, June 09, 2008 01:41:21 (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Yesterday, I read the following suggestion for the 30 Days of .NET series.

"How about a program to manually rotate from portrait to landscape, the millions of new HTC Diamond owners would love that :-)"

- Alex

Lucky guy, the HTC Diamond is a gorgeous device. I mean really, really good looking device - if Scarlett Johansson were a phone good looking here.

Don't take my word for it. See for yourself:

image

image

 

 

 

 

 

 

 

 

 

image

image On my HTC device there is an today plug-in named "HTC Home", that gives me an icon I can click on my today screen which will rotate my device's screen. See screen capture, I've converted everything else to grayscale.

This is a great little app, that does everything it claims it will do. Only thing is I hate it. I hate it because it doesn't do what I want it to do. It rotates through all four combinations of screen directions: top (0 degrees), left (90 degrees), bottom (180 degrees), and right (270 degrees). See that's the rub, never want to see my device upside down.

So basically, every time you click this icon the screen rotates 90 degrees, which means I have to go through what I consider two junk orientations, bleh.

I think we can do better.

This is probably going to be the easiest application we write. Thanks, Alex! ;D

I considered a few approaches to this application. I thought about following the same model as HTC and placing the application somewhere on the Today screen. Basically there are three ways to accomplish this. One we could write a today screen plug-in, but this isn't straight-forward in an managed application. There is a way to do it however: Creating a Pocket PC Today Screen Plug-in with the .NET Compact Framework.

Or we could create a task tray icon for our application. If you look right about the Contacts menu item in the bottom right of my screen, you can see three application task tray icons. Again, I felt this was more work than worth. But here how you could do it: Using the Microsoft .NET Compact Framework MessageWindow Class.

Finally, I though we could add an icon to the notification area at the top-right of the screen. If you'll look at my screenshot again you'll see where I have 6, count them 6, notification icons on my device. Everyone is doing this lately, and it starting to get out of hand lately. But if you like here's the information you'll need to accomplish this: Programmatically create and display Notifications.

So what was my solution? Well, I decided to leave well enough alone. This leaves the end user three choices, one assign the application to hardware button, to assign the application to a today screen plug-in that can launch other applications, and three to simply run the application manually. A lot of today screen plugs-ins have application launchers capabilities. Back to my screenshots, the today screen plug-in at the top of the screen allows for nine applications to be started from it. I've highlight the icon for Rotate Me, and made the rest the screen grayscale.

So how hard is it to check the screen orientation and change it? You tell me.

using Microsoft.WindowsCE.Forms;

if (SystemSettings.ScreenOrientation == ScreenOrientation.Angle0)
    SystemSettings.ScreenOrientation = ScreenOrientation.Angle90;
else
    SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;

Here's a link to a blog post I did on How To: Assign an Application to a Windows Mobile Device's Hardware Button in case you need it.

Sometimes it is surprising just how much you can get for such little time and effort. That's the power of the .NET Compact Framework.

Well, that does it for today. Here are the binaries. Hope you enjoy them.

Download executable: rotateMe.cab

Download Source Code: rotateMe.zip

Feedback:

Thanks guys, it's been fun. Keep the ideas coming. Don't wait until the last minute. I hope these applications are helping you realize the raw rapid application development power of the .NET Compact Framework.


Sunday, June 08, 2008 23:00:25 (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback
Sunday, June 08, 2008

This is my favorite application so far. The concept is awesome. It takes the idea of a "sound effect keychain", and make it into a fully open and extensible mobile application.

image

Mobile FX

So if you are following me, then you know that if you press the birds button you'll hear a birds sound effect, and if you press the bomb button your hear a bomb sound effect, and son on down the list.

This application tries to be as much about form as it is function. All of the icon graphics are created with Axialis IconWorkshop. (Thanks for the heads up, Jamey!) It makes making really great icons a snap using its Image Object Packs. (See the image to the right for a small sample.)

image

What I really like about this application is there is the possibility of creating add-in sound packages. I'll discuss this more in a follow up blog posting to come soon. [If there is interest? Let me know.]

The way the application works is it looks for an XML file that tells it where each of its possible icons are and where the sound files for each icon are located as well. If you want to change the order of the icons on the screen just change the order of the "buttons" in the XML configuration file.

I haven't completed the extensibility point for others to add there own icons and sounds but that is a small enhancement which I'll do shortly.

 

 

 

 

 

 

 

 

Download executable: mobileFX.cab

Download Source Code: passwordGen.zip

Feedback:

How interested are you guys in the follow up article? Is this something you would enjoy? Would you like a second pack of sounds? Is this application something you would use? Would you create a sound pack of your own?


Sunday, June 08, 2008 02:52:33 (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Saturday, June 07, 2008

I had a couple submissions for ideas to use in today's application, but decided I would use one of my own. Friday night and all: girlfriends like to go out on Friday evenings, we need to go shopping, and later we want to watch a little TV together, so I didn't feel tonight was the best night for a big project.

My idea is a simple yet very useful application for generating random passwords.

image

Pocket PasswordGen

Nothing too fancy here. It's a good looking application, but it didn't take much to make it so. Just clean layout and simple design. I did add a horizontal ruler line between the inputs and the outputs. It is actually two panels set to 1 pixel high each with ones back color set to light blue and the other pure white. The form's background is just a little off-white to add some warmth, but it is hard to tell directly.

The application engine is also clean and simple. There is a password class that has properties for each of the options, and there are two methods: Generate, and ConvertToPhonetic.

I have four character groups:

     static string  lowerCase = @"abcdefghijklmnopqrstuvwyxz";
     static string upperCase = @"ABCDEFGHIJKLMNOPQRSTUVWYXZ";
     static string numbers = @"0123456789";
     static string punctuation = @"~!@#$%^&*()-+='"",.?";

Based on options the user chooses a character list is created with all possible characters for the user's password.

Next I Generate PasswordLength worth's of characters for the password.

This is very important. I use RNGCryptoServiceProvider to generate a random seed number for the random number generator. We want real random numbers, not wishy-washy random numbers. This is a good source for how to use Crypto providers to make a password generator.

Pretty cool code, so check it out if you haven't ever generated random numbers before.

I pulled the Phonetic Alphabet off Wikipedia and made it into a generic dictionary object.

Lastly, I added a menu item that allow users to copy the password to their clipboard. I had to write some code to copy text into the clipboard. This is the best code I could find for doing so.

BTW, there is a bug in the above screenshot. Fixed in the current release. Can you see it? It's subtle. It has to do with the handle the last character. Good luck finding it.

Download executable: passwordGen.cab

Download Source Code: passwordGen.zip

Feedback

Nothing but positive feedback so far. I really appreciate. It seems we are off to a good start. Still I have another 24 days left, and only a handful of ideas I really like. So don't keep that good idea to yourself. One comment on the blog and you might have yourself your first Windows Mobile custom application.


Saturday, June 07, 2008 01:35:45 (Eastern Standard Time, UTC-05:00)  #    Comments [5]  |  Trackback
Friday, June 06, 2008

Today was a day I get to pick what I was going to write. One thing I've been doing a lot of lately is taking screenshot captures of either my emulator or my device. I don't know if there is a perfect solution for this, but I figured this would be a great "pain" to try to overcome.

Also, I just think this is a great utility to learn from and to use.

image

Mobile Capture

As always, let's look at how the application looks. Noticed I had more controls than I could put on one screen. Or if I could put all the controls on one screen it was going to look like a train wreck. I really try to make it so that if the user has to do something "tedious" like data entry, especially on a mobile device, that there is some sort of "cool" factor for the user to "experience".

In this case, I decided to make 3 sections to the form and have each fill the screen in response to the user clicking either the light blue "Capture", "Activation", or "Option" buttons. Notice how I disguised the buttons to look like section headers.

With a little effort each section could expand open as a visual effect, I choose to have the section just instantly pop to their minimized or maximized states. This would be a great feature enhancement for an enterprising reader to tackle. Just a matter of fine tuning it.

As far as features go, we have a lot happening there as well. Full Screen mode, Area mode, Hardware Key support, Time support, and the ability to take multiple pictures in a row.

That's a lot of application to take on in one day, and really only a couple of hours, but that's how we do it around here.

One issue I ran into was I managed to confuse myself. I though when I called Form.Hide() that is wasn't hiding the form's menu bar in time before the screenshot was taken. So I went and found the following blog article: Christian Helle's Blog: Programmatically Minimize an Application in .NET CF 2.0. Work's fine, but so does Form.Hide() just didn't figure it out for a while. Figured I'd leave imageChristian's code in for while since it is more interesting, P/Invoke and everything.

I wasn't quite sure the best way to take a screenshot anymore in .NET Compact Framework, so I looked that up to find a better way. I found this: Alex Yakhnin - Creating a screen snapshot in CF v2. And I decided it would do lovely, and it has so far. I haven't had the first problem with it.

Does anyone recognize where the feature set of this application is based on? It is a very famous Windows graphics program that was really popular a few years back now. Give it a guess.

The .NET Compact Framework HardwareButton device component made working with the device's hardware buttons a snap.

The way the application figures out what it needs to do between on the various combinations, and there are a lot of them, is pretty cool to check. Notices I didn't say clean and slick, just pretty cool. It could use some clean up.

I'm really happy with the UI; it was a simple trick to pull off the effect but I think it works great. Try it out see what you think! Alright well I think that wraps up day 05, I hope you like the

application.

 image

 

 

 

Download executable: mobileCapture.cab

Download Source Code: mobileCapture.zip

 

Feedback

I'm looking forward to seeing where we go next. I hope you are too. There hasn't been a lot of comments yet but I know word hasn't really gotten out yet either. But feel free to post your comments and ideas.


Friday, June 06, 2008 02:46:56 (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback
Thursday, June 05, 2008

I wasn't sure what to do for day four. I knew I wouldn't have a ton of time to work on it so it needed to be something short and sweet. That's when one of my closest friends, Chris Reeder, paid me a visit and told me to take a look at a comment he left for me on my blog. Chris runs a Web site you may know, StupidProgrammer.com. If not you should check it out.

I would like to recommend a mileage tracking application using a SQL CE database (had to get SQL into the app).

I decided this would be a great application for today. Unfortunately I multiple sets of unexpected visits from friends and family tonight and just about didn't have any time to sit down and knock this one out. But once I cut some features: SQL CE, metric support, stats graph, and the ability to compare MPG (etc) over time, it wasn't so hard. :D

image

Mileage Tracker

I think tomorrow I'll do an application of my own choosing, you guys can't have all the fun. But I'm glad for the participation. Thanks!

First thing to discuss is the design. There is some eye-candy but it is really minimum. Just a pretty background. Actually it is a background based on Windows Live Messenger's default theme. Just enough color to not be sterile.

First issue I ran into with this was transparent labels. The .NET Compact Framework for some reason does not support these. You can set it to transparent it just isn't implement and it doesn't do anything. The way I got around this was to following this guide: Alex Yakhnin - Transparent labels. (There's a minor typo: the Graphics grx object that is passed into the method is called gxOff inside the method. Just correct that and everything works great.) Very nice work-around Alex.

Not to the technical design: I had to decide what calculations I was going to support. I decided I wanted to do the following:

  1. Miles Per Gallon: required I know total distance and total fuel used. (standard mpg value)

Gallons Per 100 Miles: no new information needed. (How many gallons does it take to make it 100 miles.)

Cost Per 100 Miles: I would have to also get price per gallon. (How much does it cost to travel 100 miles.)

Maximum Range: I would need the user to provide total gallons tank can hold. (How far could I travel on a full tank of gas.)

The menu has Clear, About, and Exit menu items that are all basically self explanatory.

I decided to break out the fields and calculations into a separate class called Mileage.

I almost forgot to make a custom icon for this application. I would have hated that. I really dislike the default icon and try to always replace it.

Once again we take advantage of the custom string formatter in the .NET Compact Framework. By using .ToString("0.00") we always get numbers to two decimal places, versus huge unwieldy and unsightly values.

Like I said, "short and sweet". I hope you like it.

Download executable: mileageTracker.cab

Download Source Code: milesageTracker.zip

Feedback

So I think we are off to a great start. Today request is for reader to help spread the word and let others know about this resource. These are meant to be great resources for training and proof of the rapid application development power of .NET Compact Framework and Windows Mobile. So if you are enjoying this series and know someone else who might maybe you should let them know about us?


Thursday, June 05, 2008 01:02:29 (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback
Wednesday, June 04, 2008

image Just caught sight of a really good post by Robert McLaws: Windows Vista Edition : Windows SideShow for Windows Mobile Beta – FINALLY!

Awesome. This is really good news.

What is Windows SideShow?

Windows SideShow is a new technology in Windows Vista. With Windows SideShow, developers can write gadgets to send data from a computer to devices connected to that computer.

The beta requires you to have a device with either Windows Mobile 5.0 or  Windows Mobile 6  Professional or Standard Edition. You will also need a Bluetooth-enabled Vista PC.

Even though Robert warns that the Beta is "version 0.01", I didn't have the first problem. It just worked. :D

 

The ScreenShot Tour