Welcome to MSDN Blogs Sign in | Join | Help

Windows Mobile Documentation Team Blog: Moving Day

As of today the Windows Mobile Documentation Team Blog has moved and officially joined the Windows Blog. There are now two options for subscribing to our content.

Windows Mobile Blog | RSS
Our mobile insiders and technical experts will post content directly to the new Windows Mobile Blog. These posts will also bubble up to the higher level Windows Blog.

Windows Blog | RSS
In addition to our mobile content, you can also read Windows desktop blogs by subscribing to this broad feed.


Feel free to subscribe to both! We look forward to hearing from you on the new site!

Posted by EricN | 0 Comments
Filed under:

Going to PDC?

Make sure to attend the pre-conference to get a full day of comprehensive training on Windows Mobile application development. Renowned Windows Mobile experts Doug Boling and Jim Wilson will share their experiences with you gained through years of training and consulting in the mobile industry. Both Doug and Jim are regular speakers at major industry events worldwide and well-known authors of Windows Mobile and Embedded content.

 

Doug and Jim will guide you through the entire lifecycle of a Windows Mobile application, from A – Z. They will show you how to define an appropriate architecture, select the right tools, and how to develop, test, and debug your application. You will get specific tips on how to optimize your application for the small screens.

The name of the Windows Mobile pre-conference session says it all: Windows Mobile® Development In-Depth. To learn more about this session, check out the abstract.

 

Come learn how to write cool applications for Windows Mobile devices in this intensive, example filled session for developers and architects.

Also, if you want to learn more about Windows Mobile application development, make sure to visit the sessions in the Windows Mobile track.

 

Register here for PDC: http://microsoftpdc.com/Registration/.

 

See you in Los Angeles!

 

Constanze

 

 

 

Posted by croman | 2 Comments
Filed under: ,

Windows Embedded CE 6.0 R2 and Windows Mobile 6.1 Documentation Updated on MSDN

Windows Embedded CE 6.0 R2

The April Quarterly Update for CE 6.0 R2 assists customers in implementing new features and using development tools for Windows Embedded CE.  The April Quarterly Update highlights the following areas:

  • A scenario for implementing a wireless network projector based on Windows Embedded CE
  • Improved layout and accuracy of content across multiple features to improve readability and quality
  • Standardized "How To" topic format and procedures to provide consistent and easy to follow scenarios
  • Updates to more than 80 topics to address CE 6.0 R2 bugs from both the product team and from customer feedback
  • New "How To" topics to assist customers in development scenarios
  • New scenarios requested by customers to help customers start deploying CE 6.0 R2
  • Updated content for Source file macros, Catalog Editor, RTC/VoIP, IPv6, and BSPs

 

Windows Mobile 6.1

The update to MSDN for Windows Mobile 6.1 assists customers by providing the following information:

  • Conceptual information to assist customers deploy Mobile Device Manager
  • Mobile VPN content requested by customers
  • Content that describes effects on application development  of changes introduced with Windows Mobile 6.1, including changes to camera and home screen applications
  • Integration of customer feedback

Links

Posted by Luke | 1 Comments

Create Your Own Version of Windows Mobile Documentation!

How would you like to take portions of MSDN online documentation in your laptop without installing the entire library?

Package This is a GUI tool written in C# for creating help files (.chm and .hxs) from the content obtained from the MSDN Library or the TechNet Library via the MSDN Content Service. You select the content you want from the table of contents, build a help file, and use the content offline. You are making personalized ebooks of MSDN or TechNet content. Both help file formats also give full text search and keyword search.

http://www.codeplex.com/packagethis

Posted by Luke | 2 Comments

Job Opportunity on the Windows Mobile Documentation Team!

Ready to build a content publishing business in the fastest-growing group at Microsoft? The Windows Mobile Communications Core Content Publishing Team is looking for an experienced Content Publishing Manager to drive our commercialization content publishing efforts. Windows Mobile Commercialization team takes the Windows Mobile platform from a generic to a customized OEM and operator solution. Commercialization content gives OEMs and operators the information they need to customize their devices quickly and efficiently.

Key responsibilities for the position include managing and developing a group of programming writers as well as developing and executing a strategic plan/roadmap for creating and publishing high-quality software development documentation.

Successful candidates must have, first and foremost, exceptional people management and team-building skills. This position will manage a team working on simultaneous projects, with a wide variety of stakeholders.

Competencies should include high-level achievement in the following competencies: confidence, analytical problem solving, interpersonal awareness, impact and influence, and cross-group collaboration. The position requires an understanding of the content needs for the developer audience, a good understanding of business needs as applied to content, a solid knowledge of content management systems and technologies, and a passion for quality, responding to customer feedback and trying new approaches.

Experience and Qualifications

  • Five or more years of outstanding management and leadership experience in the software industry
  • A minimum of five years managing multiple vendor or contingent resources to develop and deliver product content.
  • Demonstrated success as a content manager or managing editor, with an emphasis on project management. Includes a proven record in defining scope and requirements for suites of product content; managing, scheduling, and prioritizing multiple projects at once.
  • Demonstrated success working effectively in a matrixed organization and has successfully motivated virtual teams to achieve results; experience managing content with multiple contributors, including demonstrated experience running a multi-contributor content development project.
  • A minimum of three years of experience creating and managing technical content for software products, including: technical web content (such as MSDN, TechNet, or WHDC); developer documentation (SDKs); and on-boarding or business-decision-maker content for complex hardware/software ecosystems.
  • Two or more years of professional programming experience, with strong coding skills.
  • Hands-on experience authoring content for developers or technology professionals
  • Outstanding personal communication skills, both written and oral, with the ability to engage readers and present complex ideas in language appropriate for a variety of audiences.

At least a BA/BS degree in Computer Science, Technical Communications, or related discipline (preferred)

Posted by Luke | 1 Comments

Windows Mobile Developer Experience Connect Site

Have a great idea for Windows Mobile!? We invite you to submit feature requests and suggestions to shape the future of the Windows Mobile developer experience. Here you can submit feature requests, share feedback, or vote on existing ones. By voting you have the opportunity to help determine which of these features may be implemented in current or future releases of Windows Mobile.

 https://connect.microsoft.com/site/sitehome.aspx?SiteID=502

Posted by Luke | 0 Comments

Job Opportunities on the Windows Mobile Documentation Team

Looking for an exciting challenge? Do you love to play with the latest mobile technologies? Are you reading this on your Pocket PC? The Mobile and Embedded Team has a job for you! We are looking for strong, versatile technical and programmer/writers to work on documentation and samples for Windows Mobile and Windows CE. The small but extremely dynamic MED CPUB writing team offers exciting challenges and unparalleled opportunities to learn and document the latest technologies in the embedded and mobile platforms.

Programmer/Writers

http://members.microsoft.com/careers/search/details.aspx?JobID=BBAAFF7E-C042-4D0A-8EDC-09122D070659&start=1&interval=10&SortCol=DatePosted

http://members.microsoft.com/careers/search/details.aspx?JobID=627F9BC6-D0A4-4B28-B218-AAF83DF03EEC&start=1&interval=10&SortCol=DatePosted

http://members.microsoft.com/careers/search/details.aspx?JobID=58ACBD1D-9BFA-46C0-AEB6-93EB294152E7&start=1&interval=10&SortCol=DatePosted

Technical Writers

http://members.microsoft.com/careers/search/details.aspx?JobID=4F71C116-5D20-41BC-8697-8ABC83C14A94&AllCl=Y&start=1&interval=47&SortCol=DatePosted&SortOrder=DEF

Posted by Luke | 1 Comments

Windows Mobile Docs: Now Available in Multiple Languages

The Windows Mobile 6 SDK documentation is now available in multiple languages, thanks to some Microsoft Research technology.

Windows Mobile 6 Docs

Posted by johnkenn | 1 Comments
Filed under:

Windows Mobile Docs: MSDN Reorganization

I'm delighted to let you know that we're finally been able to shuffle around the MSDN table of contents, and so finally get all our releases into a semblence of order. If you visit the docs online right now:

 http://msdn2.microsoft.com/en-us/library/ms376734.aspx

you probably won't notice anything out of the ordinary. Why? Because this is the way that makes sense. If you had visited MSDN last week, you might have got lost trying to find the latest Windows Mobile docs.

 Thanks to everyone involved for the (very non-trivial) work involved in making this happen!

Posted by johnkenn | 0 Comments

Intern Update: September 7th

Nuo

 Nuo writes:

This is my last blog post during this internship.

Today is my last day at Microsoft. It’s hard to use one word to describe the whole internship experience at Mobile and Embedded Device Content Publishing team, but in general it’s a fantastic, super-exciting experience.

Interns have great benefits here at Microsoft. Not only the competitive salary, free soda, free membership at the local fitness center, etc, but also training and networking opportunities. During the summer, I did real projects which will be seen by customers; I learned the development, documentation, and bug reporting process by applying them in my real work; I was invited to team meetings, so that I know what others are going on in the team and learn how my manager hosts meetings and keeps meetings effective.

Also, the Microsoft corporate training resource is completely available to interns. Through internal learning system, I took more than 40 hours’ classes online or in person. I also attended the internal Engineering Excellence and Trustworthy Computing conference.  I bet I learned a lot more during these three months here at Microsoft than during the whole previous academic year at school.

 I’ve also been invited to a lot of intern social events. There I was able to meet other interns, full-time employees, and even executives. I guess interns like us meet VPs and other executives more often than anybody else in our team. And we were invited to Bill Gates’ house; we met Steve Ballmer in our own Intern Product Fair.

Then let me talk something about people in our group, or in the company.

People here are so kind and nice. All people I met during this internship, no matter in our team or other teams, are helpful and self-motivate. When I just started, I never used C++ to write a Windows application before, but I need to use it to do my project.  I had a lot of questions, but luckily the people around me are so kind to help me with every single question I have, until I solved them.

If you will say that they helped me because they are in the same team, I will say that the person who reviewed my code is from another team and he never known who I am. He reviewed my thousands of lines of code, reviewed my nine-page documentation, and sent me a detailed report on the issues.  This is not his job; he’s not required or paid to help me. But people here are just that nice. You can drop by anybody at their door and ask for help and they will do it.

Managers are nice too. They are more like “mentors” than “managers.” Whenever I have any trouble, my manager can think of a way to help me get rid of the trouble. It isn’t necessarily to be project related. In my 1:1 meeting with my manager every week, we talked about projects, life, and anything interesting. He (or his personality) is always motivating me to be better not only for working, but also as a person.

We also have two assigned coaches. They are our day-to-day contact points. Both of them helped us a lot, with either technical or coordinating problems. They spent a lot of time with us, and help us.

And we’ve got an Intern Program Facilitator. She’s so nice too. She helped me even before my internship starts, with technical guidance. When the internship actually started, she helped a lot with coordination. The whole process can’t be this smooth without her.

In addition, I have a great peer intern here (Jason Kim) who shares the office with me. He also helped with ideas when I got stuck. It’s been great working with him.

With all the resources I have and all people’s help, I completed two Windows Mobile starter kit projects during the summer. I appreciate all their help. It’s impossible to complete the projects without them. Mobile and Embedded Devices Content Publishing team rocks! Windows Mobile team rocks! Microsoft rocks!

Overall, this is a great internship experience, and it’s my best working experience ever. I tried to put my best efforts to my work. I hope they will meet customer expectations and I hope they are valuable. I went to our Company Meeting yesterday, and I want to use the beginning of Steve Ballmer’s keynote to end this post:

“I love this company.”

Posted by johnkenn | 1 Comments

Intern Update: August 30th

Nuo

 Nuo writes:

Windows Mobile Ink: The Correct Way of Getting Recognition Results

Windows Mobile Ink APIs are new in Windows Mobile 6 SDK. I guess they are trying to replace the old RichInk APIs.

The way of using Windows Mobile Ink is not complex. The basic idea is to have a IInkOverlay object as an ink collector; an IInkDisp object as a container of strokes data; an IInkStrokes object as a collection of IInkStrokeDisp object. The IInkOverlay object collects the ink data and put them in the IInkDisp object. Then the IInkDisp object sends the strokes to the IInkStrokes object.

When the strokes data are in the IInkStrokes object, it's time to get the best recognition result. Currently there are two ways of doing that. One is to directly use the ToString() method to get the best recognition result; the other is to create an IInkRecognitionResult object and use the get_RecognitionResult property to get the recognition result set from the IInkStrokes object, then use get_TopString() property to get the best fit result and put it in the BSTR. 

 /**
* pInkStrokes is the IInkStrokes object. 
* pInkRecognitionResult is the IInkRecognitinoResult object.  
* StringRecognitionResult is the BSTR.
**/

//Get the best recognition result to the IInkRecognitionResult object
pInkStrokes->get_RecognitionResult(&pInkRecognitionResult);
//Get the best recognition result to the BSTR
pInkRecognitionResult->get_TopString(&StringRecognitionResult);

 

The first way, using ToString(), seems to be much easier than the second way which is to use IInkRecognitionResult object; However, ToString() is not recommended in this case. I've even mistakenly used ToString() and had some strange exceptions raised (e.g. WinCE501bException) when my application is not used properly. The correct way of getting ink recognition results is to use IInkRecognitionResult object and its properties.

Posted by johnkenn | 1 Comments

Intern Update: August 23rd

Nuo

 Nuo writes:

 

It’s been a long time since my last post. I was too busy working on another starter kit. Now everything is almost completed so I sit down and write this blog post.

I should have written this blog post yesterday, but our team had a golfing and picnic event so I didn’t had time to write blog. I enjoyed the event so much. It’s my first time golfing, and I already began loving it.

For the Tic Tac Toe starter kit, I’ve finished it for some time but I promised to talk about the mechanism here so I will do it now. Let me talk about the final part, how I did the user versus computer game logic.

An array of nine Boolean values is created as a global variable (BOOL bU2UGameData[]) to track (hold state) whether a specific window is already occupied. Two other Boolean arrays (x[] and o[]) are created as global variables to hold states of which grids are occupied by X and O’s respectively for the user-versus-computer game. A Boolean global variable named bU2UGame distinguishes whether the game is user-versus-user or user-versus-computer.

In DoRecognize(HWND, int), when a X or an O is recognized, the application checks for a winner by calling DoU2UWinnerCheck(hwnd, int, char*,  LPCWSTR). If no one wins, it checks whether it is a user-versus-user game by testing the value of bU2UGame. If it is not and user-versus-user game, it calls DoAI(char*) to perform a computer move.

DoU2UWinnerCheck(HWND, int, char*, LPCWSTR) does the following:

1.       Changes the specific value in bU2UGameData[] to TRUE.

2.       Adds the current letter to the global result set.

3.       Invalidates the client area so that WM_PAINT is triggered to display a bitmap showing the correct letter.

4.       Calls a Boolean function IsWinU2U(int) to determine whether that move wins the game.

If all bU2UGameData[] values are already set to TRUE and no one wins, DoU2UWinnerCheck(HWND, int, char* LPCWSTR) pops up a MessageBox to show the “Tie” message.

IsWinU2U(int) tests whether three bU2UGameData[] values are all true in the same line and whether they are all the same letter. Another global variable of char*[] is created (g_ResultSet[]) to store the recognition result of each window.

If this is a user-versus-computer game (bU2UGame = FALSE), then DoAI(char*) is called to make a computer move.

DoAI(char*) does the following:

·         Compares the recognized string (passed into the function as a parameter) with X and O, to see which letter the computer move should use.

·         Generates a random number between 1 and 10 for the skill level test. There is a global variable named g_ilevel which stores the skill level the user chooses (easy means g_ilevel = 0, medium means g_ilevel = 5, hard means g_ilevel = 10.) If the randomly generated number is greater than g_ilevel, the game performs a random move by calling RandomMove(char*); otherwise it make a smart move by calling ComAllWinMove(char*).

RandomMove( char*) generates another random number from 0 – 8, stores the variable, and tests if bU2UGameData[ran] is TRUE (meaning that window is occupied), then updates ran, until it gets a number whose bU2UGameData[ran] value  is FALSE. Then it calls DoMove(HWND, int, char*)  to make the move.

CompAllWinMove(char*) gets the letter the computer move should be using from its parameter, then it checks whether there are any two of the same letter already in a line (e.g., if(o[0]+o[1] == 2 && bU2UGameData[0] + bU2UGameData[1] = bU2UGameData[2] != 3)). It checks every possible case until it finds one, and then calls DoMove(HWND, int, char*). If no such case is found, it checks whether there are two opposite letters in a line and the third one is missing (e.g. if(x[0]+x[1] == 2 && bU2UGameData[0] + bU2UGameData[1] = bU2UGameData[2] != 3)).

It also checks every possible combination of moves until it finds one, and calls DoMove(HWND, int, char*) to make that move  in the missing window. If no such moves can be made, it checks whether the center window has been occupied and makes a move there. If the center window is occupied by the opposite letter, it then tries to make a move to any of the four corner windows (0, 2, 6, or 8). If none of these moves can be made, then it calls RandomMove(char*) for a random move.

DoMove(HWND, int, char*) calls DoU2UWinnerCheck(HWND, int, char*, LPCWSTR) to change all related Boolean variables as TRUE (”occupied”) and test for a win.

The user versus computer AI does the right thing. However, it’s certainly not the best AI from the game points of view. Concerning the main audience of this starter kit is ISV, OEM, and individual developers who interest in learning programming with Windows Mobile Ink, I’d rather think using this easy-to-understand AI is better than using a fantastic AI but no one understands.

This starter kit is going to be published soon. For more information, look at the published version and its documentation. I tried my best efforts to do it, and I hope you will like it.

Nuo

 

Posted by johnkenn | 1 Comments

Intern Update: August 15th

 Jason writes:

At Microsoft, an application and its related documents must go through a review process before public release.

I am happy to state that The Journal Manager is now in a reviewing phase. This means, the coding and documentations are all complete and it only needs to be reviewed and fixed accordingly if a problem arises.

Here is the complete list of features that are related to database (SQL CE):

  • Add new record
  • View all records (ascending/descending order of date)
  • Edit existing record
  • Delete existing record
  • Search (Keyword search on subject alone, or over multiple fields)
  • Custom fields(user add/delete/edit fields)

Another feature is related to file import/export. They can be done in two ways:

1. sdf file (straight off SQL file)
2. sql + xml file:

( sql : simple commands to create tables within a database, xml: data structured in XML form.)

The reason for having these two different types is the following: Sdf file would be good for transferring data over phones or other Microsoft's SQL programs. SQL+XML would be good for transporting to other applications or devices as sql syntax is similar for numerous SQL related programs and XML is widely used for data transferring between two parties.

Also, when local server framework is implemented on the phone, a valuable web service could be provided using XML format.

So, here it is.

While in the reviewing process, my goal is to explore more about roles and responsibilities of being a Programmer Writer at Microsoft as well as to explore other positions.

Posted by johnkenn | 1 Comments
Filed under:

Intern Update July 27th: Jason

 Jason writes:

As of today, basic SQL functionalities and related triggers are complete.
Also, concrete design on user interface has been implemented and related triggers are connected to relevant controls, as well as inter-connectedness of the forms.

Forms are connected in a following manner:

 

Few Issues arose in implementation of SQL Functions. Two of the important ones are:

1. SQL CE did not support simple change column command within ALTER TABLE.
2. Way of forwarding information between forms (eg/ from ViewAll to View Details)

Frankly, there was a work-around for both.

1. It is a little more work, but possible with a temporary extra storage.
   => create a new column, copy from old column, drop old column

2. Since Date and Subject combinations are unique, pass on that information to next form and in the next form, do another query on the date, subject combination.

Now, since database related functions are approaching the finalization, actual database file handling and import/export issues must be addressed.

While database file handling (names of database, etc) is an easy job in terms of implementation, it is a tricky job to come up with an easy and interactive interface. (and SMART.)

The bigger issue now would be the Import/Export feature.

To make it more compatible with various other platforms, I am planning to export as an XML file and a .sql file.

Basically, XML file would hold all the data in XML form, while sql file would simply have relevant sql commands to create relevant tables.

Export should not be too big an issue, but import is a little harder job. Also, restrictions should apply that the default field names must be retained and types of additional fields are restricted to nvarchar, integers, and numbers as the Journal Manager would not support other types for additional fields.

It has been suggested to include a media (i.e. pictures, inks, etc) and although it would be great, the import/export will likely to not include those as exported files are simply text files. More importantly, it will be hard to incorporate these types of data in SQL, the feature will not be likely to be implemented in this version of Journal Manager.

Jason

 

 

Posted by johnkenn | 1 Comments

Intern Update July 27th: Nuo

Nuo

 Nuo writes:

Since Windows Mobile devices will be manufactured from different hardware manufacturers, so I need to adapt my application to devices with different screen sizes.

The first approach I thought to use was to make several fixed cases: 640*480, 320*320, 320*240, and 240*240. Then hard code the window and control size information for these different cases. My reasoning was basically all of the current devices are equipped with these screen sizes so the application will fit well for almost all devices.

However, with some deep thinking and advises from others, I realized this is really a bad approach. As an application developer, I should not assume the application will run on the devices with these specific screen sizes.   Nothing should be hard coded, and all window sizes should be determined when the application loads.

The screen layout of the application will look like:


What I need to do is to determine the screen size of the device before this interface is loaded, then determine the location and size of the child windows and controls. The way I get the screen size of the device is to use GetWindowRect() function. For the location and size of the controls, I did quite a bit mathematical calculation, and get the following equations which I believe are fitting all screen sizes.

Size of each of the nine ink window = screen height / 6

Blanks in between each ink window = screen height /32

Status label on the top of user interface (vertical starting point) = (screen width – 3 * ink window size – 2* blanks in between)/2
Status label on the top of user interface (horizontal starting point) = screen width /32
Label length = screen width – 2 * label vertical starting point
Label height = screen height /14
Height of each button = screen height /16

With these variables, other positions of the windows and controls can be easily calculate without hard coding their values.

In addition to adapt the application to the screen size of the device at the time the application loads, I also need to concern about the orientation change of the screen. Orientation change in Windows Mobile application development is quite like window size change in general Win32 programming. So I specified the WM_SIZE message handler for the main application window, and called MoveWindow() function several times to move the windows and controls to the right place. Exact same equations are used here in MoveWindow() as in CreateWindow() above. So the application will adapt the new screen size if orientation has changed.

However, beside the main application interface, there will be two dialogboxes giving user the choice of playing a user versus user game or user versus computer game. The two dialogboxes loads before the main application window so GetWindowRect() won’t get the correct window size for those dialogboxes. I got stuck here and I thought of a lot of complex ways to make the dialogboxes screen size aware. Luckily, after looking for some resources about this issue, I found a function called GetSystemMetrics() in the SDK which can get the device screen size even before the main application window has loaded. So I declare two int variables height and wdith, then do the following:

height = GetSystemMetrics(SM_CYSCREEN);
width = GetSystemMetrics(SM_CXSCREEN);

Then I have the screen size data. I specified WM_INITDIALOG in the dialogbox procedure put the above code under that event handler to get screen size. Then I use MoveWindow() to actually make the dialogbox as big as the screen size. As same as the main application window, I also specified WM_SIZE for the dialogbox procedure for the cases screen orientation changes.

Now the application is screen size/orientation aware. This is easier to implement than I thought, so I can move ahead faster than planned. Next time I will talk about the user versus computer game logic of my application.

P.S. Several days ago all Entertainment & Devices interns went to a cruising event. We cruised between Kirkland WA and downtown Seattle on Lake Washington. Nice food and activities were provided on the boat (or ship). I really had a lot of fun! :-D

Nuo

Posted by johnkenn | 2 Comments
More Posts Next page »
 
Page view tracker