Programming CE, Book and resource recommendations - Windows Mobile Development and Hacking General

Hello,
After a decade of not doing C, I find that alot of things have changed when programming c++ native for CE. Even things like:
string somestring;
no longer function. Wow!.
strcpy has been replaced with StringCchCopy. Wow, MS has done a number here... and so on...
Anyhow I searched xda and found allot of good threads. But what if I'm looking at re-learning C++, with a focus on CE programming only? What books and other resources would you recommend, its almost like starting from scratch. I got vs2005 + emu + been reading allot of MSDN, did some basic apps. etc.
BTW: How the .... do you declare a variable length string???
and in VS2005 is running the debugger the only way to get the app to start automatically ???
Thanks

*bump*, anyone?

Couple of notes:
1) I strongly recommend avoiding VS, it is unbearably slow and balky.
2) strcpy and all the other functions are still supported by c runtime on CE (VS 2005 complains about them but you can ignore it). The problem is all windows API on CE use UNICODE so you have to declare strings as WCHAR (thats MS speak for unsigned short) and use wcscpy, and such.
3) The only book I know on CE specifically is this and I only read the two sample chapters online, so can't really recommend it. (Though the sample chapters were very useful). What you need is to get a good book on Win32 programming that will get you well on your way.
4) There is an MFC class CString which wraps up all string related functions very nicely. If you are not using MFC but clean C/C++ the only thing I can think of is malloc and free or the C++ versions new and delete.
Check out the links in my sig if you want to see code examples of small but functioning apps.

I disagree with levenum's comment on VS, but agree at the same time (weird I know). I wouldn't use VS for native development because it has A LOT of extra features that I think would be useless for native developers. Also, the lighter eVC++ has pretty much everything you need to write native apps.
I had this book called "Programming Windows CE 3.0" or something along those lines a few years ago. I got it for like $3 on Amazon. If you can find an updated version of that (or even the old version would be useful) then you should buy it. It will show you all you need to know to get started. You can learn the new api's from browsing msdn.
If you're only a little rusty with C/C++ I would suggest jumping right in to the Sdk samples and seeing how they do things.

Thanks, the reason why I wanted to use VS is so that maybe later I wouldn't mind going into MFC. So having one platform would be nice.
So far I have done some basic things, like drawing, etc, but I find I'm having a harder time making strings and including the api's to work. Almost all of the msdn examples fail to compile properly.
I have an old book MFC for Windows 95 by MS, is it even worth looking at ?

robp said:
I disagree with levenum's comment on VS, but agree at the same time (weird I know). I wouldn't use VS for native development because it has A LOT of extra features that I think would be useless for native developers. Also, the lighter eVC++ has pretty much everything you need to write native apps.
I had this book called "Programming Windows CE 3.0" or something along those lines a few years ago. I got it for like $3 on Amazon. If you can find an updated version of that (or even the old version would be useful) then you should buy it. It will show you all you need to know to get started. You can learn the new api's from browsing msdn.
If you're only a little rusty with C/C++ I would suggest jumping right in to the Sdk samples and seeing how they do things.
Click to expand...
Click to collapse
could you provide some links for msdn. also i know how to program in c but how do i compile a program for windows ce could you recommend a free one. thanks

The only way to code for Windows Mobile for free is to use embedded Visual C++. You'll have to google it to find a link.
Once you have that downloaded, check out:
http://msdn2.microsoft.com/en-us/library/bb158662.aspx
The new solution files most probably won't open in eVC++ but you can create new projects and add the source files yourself.
You'll want to look at the samples in the Win32 folder.

robp said:
The only way to code for Windows Mobile for free is to use embedded Visual C++.
Click to expand...
Click to collapse
That's not entirely true - there's still ceGCC (it works on linux or windows using cygwin) - however this one lacks resource (window, forms, etc) editor (but if you have resources already created it will compile/link properly). But it works great with apps where you want to handle all the graphics and user interaction by yourself (like games, or programs with 100% custom UI), for example using SDL, pocketHAL, etc.
Also, wxWidgets seems to have support for windowsCE, and might be made to work with ceGCC, but i haven't tested it yet.

Sorry, I actually meant to put "(I think)" after that sentence lol.
Actually I think you should be able to use any C++ compiler as long as you have the necessary libraries, and I think all the libs you need are in the sdk download. But the easiest route for beginners in native coding is probably eVC++

Well, now i can agree with you
That is, unless you want to create games - in that case ceGCC+XFlib might be a good way to go for someone with general programming knowledge, but not familiar with winCE-specific coding. Some games coded with it (and their sources) can be found on XFlib homepage: www.xflib.net.

thanks for the info

Ok, as I wouldn't mind at a later time going into MFC, and building dll's for mobile. How much "harder" would it be for me to learn VS2005 native for ce instead of using evc++ ?
Just trying to weight the cons and the pros. BTW where can I get eVC ?
Thank you.

Two more free options: PellesC and Lazarus + WinCE add-on

I don't think it would much harder. Once you get the hang of it you'll find that it makes life much easier. If you buy a boxed retail version it comes with a nice book that will take you from n00b to master in a few hours (not really but it's still a great reference).
I think the hardest part of upgrading to newer versions of VS is learning the new project file setup. Atleast that's what it looks like from watching other students at my school go from VS6.0 to VS2k5 and 2k8.
Also, I should note that I prefer VS2008 hands-down, but I don't disagree with other people who say eVC++ is faster. While I haven't done any real native development since eVC++ 4 was new, I still dabble a bit (especially since getting active on this forum) and VS2005 works great to me.
So, my advice would be to use the newest tools available to you, unless money is an issue. But don't be worried about upgrading. Your life will only get easier once you do.

robp said:
Also, I should note that I prefer VS2008 hands-down, but I don't disagree with other people who say eVC++ is faster. While I haven't done any real native development since eVC++ 4 was new, I still dabble a bit (especially since getting active on this forum) and VS2005 works great to me.
So, my advice would be to use the newest tools available to you, unless money is an issue. But don't be worried about upgrading. Your life will only get easier once you do.
Click to expand...
Click to collapse
Well I just got eVC and will give it a try too. But I am pretty much used to vs2005. I do not think I can't afford the vs2008 right now. How much difference is there between 2005 and 2008 when it comes to programming for WM?
I'm looking to create some commercial applications for WM. For the last 10 years I'v been doing .com apps, now I figured I would do some for the mobile platform. We have all the graphics/design/marketing guys for .com, so it should work out just fine for WM.
One thing we noticed when working with exec type people is their frustration, I see exactly how we can help them resolve their frustration with WM, Symb, and java type phones...
Thanks

marek101 said:
Well I just got eVC and will give it a try too. But I am pretty much used to vs2005. I do not think I can't afford the vs2008 right now. How much difference is there between 2005 and 2008 when it comes to programming for WM?
I'm looking to create some commercial applications for WM. For the last 10 years I'v been doing .com apps, now I figured I would do some for the mobile platform. We have all the graphics/design/marketing guys for .com, so it should work out just fine for WM.
One thing we noticed when working with exec type people is their frustration, I see exactly how we can help them resolve their frustration with WM, Symb, and java type phones...
Thanks
Click to expand...
Click to collapse
Honestly I wouldn't rush to upgrade. VS2008 is better, but doesn't add much to the WM development arena.
And if you already have VS2005 and are used to it, I would stick with that and forget about eVC++. You should give the compact framework a try. I promise you'll love it

compact framework, that's a part of the .NET isn't it?.
For the time being, for learning purposes, I think I will stick with the native for now. Once I get a grip, I will explore .net. The thing is I really don't like bulky apps for WM. Most of the apps I came across that required the .net framework were slow, any apps that use the .net with a today plug in seem to really slow down my phone.
BTW is HTC Home plug in written with the .net?
Thanks

marek, it seems to me that you are under the impression that you need VS 2005 to use MFC.
eVC fully supports MFC as well as creating DLLs and MFC DLLs.
It admit the reason I don't like VS is because I only write in native and don't like .NET languages a lot.
Since you want to create commercial apps you should note that any app created with WM 5 SKD will not be backwards compatible with WM 2003 which reduces your clients range.
You should compile with WM 2003 SDK which is forward compatible.

Our primary target audience would be WM6. We will make every effort to make WM5 compatible apps. Yes it does reduces significantly the client base, but also there are many positives...
We are still looking for more programmers for the simple concepts we have developed. I believe this will work out just fine. Having WM5 support is a "would be nice" but not required. WM5 has a bag of problems, 2003 I don't even want to touch it.
Thanks

I have to admit that I love VS because I love using .net
But VS is also a much more powerful editor in general than eVC is. It's still nice but the experience isn't as smooth as it is in newer versions, which is expected since the newer versions build on the previous ones.

Related

ATL or MFC

Hey,
I'm trying to make a User Interface for a program using Visual C++ 2005.
I have two options for Smart device applications.
1. A project for Windows Mobile and other Windows CE-based devices that uses the Active Template Library.
2. An application for Windows Mobile and other Windows CE-based devices that uses the Microsoft Foundation Class Library.
Which is the right one to use for Pocket PCs?
No idea 27 - I've never used either ATL or MFC. I do all my stuff in pure Win32. It's not necessarily the best way, but it's worked fine for me so far, but I do very limited GUI stuff.
BTW - regarding your signature:
"A tiger does not have to proclaim its tigri-tude."
Click to expand...
Click to collapse
clearly Wole Soyinka hasn't met Tigger.
V
vijay555 said:
No idea 27 - I've never used either ATL or MFC. I do all my stuff in pure Win32. It's not necessarily the best way, but it's worked fine for me so far, but I do very limited GUI stuff.
V
Click to expand...
Click to collapse
I see.
I'm trying to make a GUI app for WindowsMobile. Any ideas?
Hi 27,
I'm not sure what you want your GUI to contain but a simple Embedded MFC app with a dialog might be a good way to get going?
best of luck...
dav
I've been developing for big Windows since '92 and have done one or two small CE projects. Straight API programming is a bit tedious but it's pretty straightforward and will help you learn the fundamentals. It also produces the tightest code, an important consideration if you're looking to run on smartphones.
Avoid MFC like the plague -- MFC apps tend toward the large side, and it tends to force you into a document/view model that might not be appropriate for your app. I did quite a bit of MFC work in the early and mid 90s; most of my time went to working around MFC's limitations.
If you go the ATL route check out WTL, a set of C++ template classes that extends the UI functionality of ATL considerably. I've been using it since it first came out and wouldn't switch back to MFC if you put a gun to my head.
I agree. MFC makes everything less straight forward. Why use something designed to hide how it works? I use plain win32. After the pain of starting from scratch you eventually build up your own code base to reuse.
both can be used
MFC is old and bulky but many things are don automaticly
compared to win32 sdk
you can also use .net but they are somewhat slow
but dont use much space
win32 sdk is the fastest and can do anything but it's the most work
3waygeek said:
I've been developing for big Windows since '92 and have done one or two small CE projects. Straight API programming is a bit tedious but it's pretty straightforward and will help you learn the fundamentals. It also produces the tightest code, an important consideration if you're looking to run on smartphones.
Click to expand...
Click to collapse
How can i do this on VisualStudio 2005?
I'm a bit new to this.
Strange question - you develop in Win32 by NOT developing in MFC or ATL
The other frameworks are built on top of the native Win32 API. So learning the bareknuckle stuff first helps you to learn how to get the most out of the other stuff.
V
27 ask a importent question imho
can ppl make nativ CE api projects in 2005
or do you need embedded c++ to do that?
btw i believe that embedded c++ is free so if 2005 cant do it
ppl can just get the embedded version
VS2005 does native Win32 (2003, Smartphone and WM5).
EVC is of course free, and runs much better IMHO (eg no bugs in the Remote Tools etc, faster). I can't think of a good reason to upgrade unless you're developing expressly for WM5 or using non C++ languages, for which VS2005 is required.
V

What are the best books on WM5

Hi all,
I am new to WM5.0 programming but programmed for Winodws so i have some questions plz :wink:
does eVC++ 4.0 support developing for WM5.0?
what are the best books available for learning WM5.0 programming?
Mohammad
Best Book? You mean "Any"?
We have the same problem. The only book on CE 5.0 is in Chinese.
We ordered the newest CE book avilable, it's from 2003.
But there's a lot of CE documentation from Microsoft, and of course you can learn a lot here.
this is really strange, we find thousands of books about VC++, VB and others... isnt there a bool on WM5??
Not even CE 5.0, let alone WM 5.0.
But a lot of those VC# and C++ books are very pertinent.
Don't know of any books, but I can answer you question about eVC 4.
You can develop apps that will run on WM5, but you can't use WM5 SDK.
Mainly, this means that if you want to use a WM5 specific functions (not many of those) you have to go through LoadLibrary and GetProcAddress instead of direct linking.
Thanks, but I have installed eVC++ 4.0 and its sp4, when I try to run it, it tells me that it cant run because no sdk was found, so what to do if WM5.0 sdk cant be used with eVC++ 4.0??? do I have to use VS .NET 2005?
thanks all
Mohammad
mohgdeisat: You need to install the previous WM2003 SDK and can then develop apps in the normal way, that will run on WM2003 and WM5. What you can't do without WM5 SDK is develop apps JUST for WM5.
However, I imagine that you can install the WM5 SDK anyway, and directly use the Libaries and Headers manually, just by pointing the project settings to load libraries from the WM5 directories.
I do this in quite a few of my WM2003 apps anyway.
This will still make a WM2003 app, but it will support WM5 features, if you're lucky.
I don't suggest installing Visual Studio unless you have to, but if you're serious about developing on WM5, then I very much recommend it.
And remember, Microsoft gives a free trial version of the Professional version, for download (2.7gb).
http://forum.xda-developers.com/viewtopic.php?t=59991&highlight=visual+studio+trial
If you have to reinstall every 3 months, it's still cheaper then buying it I guess. :wink:
V
Actually, you can't install the WM5 SDK unless you have the studio. I tired and got the message "You have no products that can use this SDK installed ..."
It wouldn't let me continue.
If someone knows of a workaround for this (that does not include installing VS 2005) I would be glad to hear it.
Take apart the cabs/installers and extract the headers and libraries.
I can zip them up if you want, I suppose.
I may be confusing myself with Platform Builder, but that's how I'd do it if I had to.
V
Thanks for the idea V and the offer. No need to zip the stiff though.
Thanks guys,
I am really interested in building WM applications as I believe that WM development will have a giant jump in then next years.
I am ready to install VS .NET 2005, but I am not interested in developing .NET applications for WM5.0 environment, I read about CF and CE programming and I came up with a conclusion that if I want to develop serious commercial and robust applications then I should use C++, either pure WinAPI programming or at least use miniMFC library.
I really care very much about robustness and resource usage of applications, I also want to use a productive development tool/environment.
My question is, when you compare between miniMFC vs pure WinAPI programming you find miniMFC more productive, yet WinAPI is more robus,portable and efficient, so I have to compromise here... What do u think should I use miniMFC or WinAPI? does the development in WinAPI bring great performance advantages over miniMFC?
Thank you
Mohammad
I think you are missing something here.
MFC (mini or not) is basically a collection of prepared code. It still uses win32 API (there is no getting away from them unless you are using .NET) but it raps them up in convenient classes. If you are writing a large app, with a lot of interface components (multiple dialogs, view windows etc) MFC can save you a whole lot of coding, though statically linking it will add about 0.5MB to your app size.
Using MFC also doesn't exclude using win32 API directly to reclaim functionality that MFC skips.
When writing small utilities or system add-ons like today plug-ins it is best not to use MFC to reduce app size.
While I agree with you 100% that .NET CF is still to resource hungry for Pocket PC and Smartphone devices, it should be noted that when writing large GUI rich apps that require database or other outside components using .NET saves a whole lot of work for the programmer (while the user pays the price in speed and memory).
Thank you,
I know that MFC wraps win32 api in classes for the ease of use, it has also a good OO hierarchy, and this is very good, it increases productivity but as far as I know there are costs when using MFC library, those include Exe file size, memory usage, and even cpu resource usage.
As I read from many books, programming windows applications using pure Win API enhances performance (speed/resource usage) but I dont know to what degree it enhances performance.
in short, MFC is more productive, easy and well managed.. but WinAPI is more efficient.. but when I use Win API program development will take longer time than it takes with MFC, so is using Win API (no MFC) is justified by its performance advantages over MFC (or miniMFC)??
Thanks
Does .Net have something like JIT Compiler?
mohgdeisat, sorry, I misunderstood you. When you asked if you should use MFC or pure win32 API I assumed you thought they were mutually exclusive.
I haven't actually measured this with any tool, but from writing apps both ways I can tell you that while file size can get significantly larger (by as much as 0.5MB maybe more) as far as speed is concerned there seem to be no noticeable difference.
Also you have the option to link to MFC dynamically which will eliminate the increase of your exe size.
The difference in programming effort is very noticeable, specially when building dialogs and handling their controls. What needs only a couple lines of code with MFC is likely to take whole functions without.
So for a large program I recommend you to use MFC or look in to some alternatives like ATL.

New programmer on pocketPC... advice?

hey guys, I'm a career developer with tons of experience in a lot of things except PocketPC. I want to play around a bit with PPC, but would like to hear about the development platforms, languages, etc. that you're using and what you like about them. I don't know anybody personally that's even remotely interested.
I'm currently using VIsualStudio2005/C# for my day job, and am pondering whether that's a good fit for PPC. A lot of documentation exists for both managed and native PPC C# code. Managed code is more like the stuff I do all day.
What I've found so far is that managed code requires runtimes to be installed (already there on WM6 i hear), there's a noticeable delay when starting a managed program, and a lot of functions are missing from the .NetCF.
I'd probably be writing business apps (database stuff, web back-end client/server, etc.) as well as hacks like today plugins, utility programs, etc.
Should I just start right out with native coding, or try and hack away with managed code. What's your opinion?
roboHaxx,
As i'm sure you're already aware of, choice of language on this environment really depends on the application you're designing.
I tend to use Visual Studio/C# for applications that I need to develop rapidly where I'm not too concerned about load times. The .NetCF libraries really helps in ensuring things get done quicker but there's a tradeoff in speed and functionality but not by too much thanks to all the new spec devices that are coming out.
If I'm developing something that doesnt need to get done faster, and I need quick loading times (like today plugins for example), I tend to stick with C (evc4).
Personally I stay away from .NET and all related stuff like it was toxic waste.
As kunz wrote it is too slow for PPC (at least for now) and if you want to use the .NET CF 2 any user with a device prier to WM 6 (which is the majority for at least another year) will have to install 5MB worth of run time.
But there are some very nice apps made with CF already out there like Hitchhiker so it defiantly has its place.
One problem though: if you want to develop system components like today plugins, keyboards (SIP) or control panel applets you will need a component written in C / C++. All those are DLLs that the system expects to export certain functions. This can not be done with managed code, and as far as I know not at all in C#.
One final recommendation: look up all threads started by Vijay555.
He wrote a pretty good summary of programing tools and options for WM devices somewhere on this forum.
Thanks for the replies. I'm think I'm starting to get a grip on this platform.
Sounds like the same principles as programming on a PC. For business apps (like in my day job), the managed, quick-to-market environments like C#, .net and CF2 prevail. But for performance, versatility and access to everything, C is the way to go. C++ if you must.
by the way, I thnk you can create DLLs in any Visual Studio language. I do it all the time with C# and VB. Now whether these DLLs can export the functions that are needed in PPC, I don't know the answer to that.
kunz, you said
If I'm developing something that doesnt need to get done faster, and I need quick loading times (like today plugins for example), I tend to stick with C (evc4).
pardon the dumb question but, what is evc4? A compiler I presume. That was going to be my next question. Which compilers do you like?
eVC is eMbedded Visual C++ 4.0 its a free C++ IDE for Windows Mobile from Microsoft.
It is almost identical to VS 6 (if you are familiar with it).
It won't except WM 5 or 6 SDKs, but any program create on it (with WM 2003 SDKs) will run on any Smartphone or Pocket PC starting with WM 2003 through WM 6.
For older versions you will need eVC 3.
The following pages should provide some useful information:
http://channel9.msdn.com/wiki/default.aspx/MobileDeveloper.HomePage
http://www.pocketpcdn.com/tools/index.html
Enjoy!
Hi,
I am programmer but I'm new in mobile development too.
I have an ideal to write a program that can speak the caller number instead of ringtone. The problem is that I don't know how to get the receiving call events.
Can we solve this situation with .net compact framework?
Anyone have documents to share?
Thanks

Getting into WM5/WM6 programming?

I am interested in dabbling a little in programming for my Kaiser. I have programming experience, mainly php / mysql, though I have done some C and lots of scripting in my time. My biggest project so far though was an open source google maps mod to put on your website - thousands of lines of php / js code, mysql backend and AJAX tieing it together, some graphics routines etc, so I am no drooling n00b when it comes to coding.
How easy is it to develop basic stuff in WM?
I have access to MSDN, so I can get Visual Studio (2005 for sure, maybe later versions), so I think I have access to the apps I would need. I just ordered some books to help me along, but was wondering if I would likely face a steep learning curve.
All the stuff I want to do is today screen plugins - was thinking of having a bash at writing my own quick contacts plugin - *very* basic - just a vertically scrolling list of names over a transparent PNG button with maybe photos from the address book - I want it to be able to scroll by vertical gesture within an ultimatelaunch tab - is this likely to be quite easy and quite a good "first app" to program?
I was also looking at writing a lite repacement for phoneweaver as the only feature I use is to turn on BT when it detects power but no activesync (ie auto turn on BlueTooth when I am in the car and the device is cradled) - maybe a hack to force the keyboard backlight on in the same situation.
I have bought:
Microsoft® Visual C#® 2005 Step by Step (Microsoft)
Microsoft® Mobile Development Handbook [Paperback] by A. Wigley; Daniel... (Microsoft)
Comments / suggestions?
I would also be very interested in a thread or good reference on how to start to program app for mobile gadgets. Actually i'm a Delphi coder, and i would like to implement some applications on WM platform, but when i search over internet there's plenty of information, but no usefull information with "real-life" recomendations.
depend on the platform and language one wish to use really
there is c#.net, vb.net c++.net
c++ miniMFC, c++ PureWin32 sdk
oldVB
...
here are some other posts asking pretty much the same thing from the forum
http://forum.xda-developers.com/showthread.php?t=225405&highlight=programming
http://forum.xda-developers.com/showthread.php?t=237932&highlight=programming
http://forum.xda-developers.com/showthread.php?t=241670&highlight=programming
http://forum.xda-developers.com/showthread.php?t=245426&highlight=programming
http://forum.xda-developers.com/showthread.php?t=228043&highlight=programming
http://forum.xda-developers.com/showthread.php?t=317913&highlight=programming
http://forum.xda-developers.com/showthread.php?t=302548&highlight=programming
http://forum.xda-developers.com/showthread.php?t=327164&highlight=programming
http://forum.xda-developers.com/showthread.php?t=305926&highlight=programming
http://forum.xda-developers.com/showthread.php?t=336251&highlight=programming
http://forum.xda-developers.com/showthread.php?t=226412&highlight=programming
codeguru.com got examples of various windows mobile programs too today items and such
about delphi i dont know if anybody got some info i would say borlands site
Thanks rud. I was aware of various other posts, but my question was more of a "How steep is the learning curve?" rather than "How do you do it?".
There was also an element of "How do you do it?" insofar as there seem to be better or worse ways of going about various kinds of app (eg today apps with gesture support) which I am finding a bit of a minefield, but I feel that the new post was valid because I am giving an indication of my experience level and what I am trying to acheive - none of the posts you listed cover the combination of stuff I am trying to do. Reqs like pulling from outlook db and allowing gesture scrolling in a today plugin, I dunno, I may waste ages with C#, for example, only to realise it is a breeze with C++... I also note that a google search for wm programming gesture scroll today screen currently ranks this very thread #5. By tomorrow that'll be a googlewhack then.
Yes, there are various posts about how to get started, but I think maybe a sticky would be in order with a bit of info on the various paths - the vb/c++/c# options are quite bewildering - stuff like
levenum said:
Your question is mainly a matter of personal preference.
Here is my opinion on C++ vs. C#:
C++ advantages:
- Native code is faster than .NET
- Easier access to Win32 APIs
- Ability to write system components like keyboards and today plugins.
C# advantages:
- Saves on coding time
- Allows use of many .NET CF components to quickly accomplish complex tasks.
Please note that I am bias. I hate .NET and want nothing to o with it. Specially on mobile devices that do not have the processing power to spare for the .NET overhead.
Click to expand...
Click to collapse
is really useful, maybe if it were expanded upon, info such as for this route you need visual studio, etc, etc it would make a really good sticky for the dev section.
evilc said:
I am interested in dabbling a little in programming for my Kaiser. I have programming experience, mainly php / mysql, though I have done some C and lots of scripting in my time. My biggest project so far though was an open source google maps mod to put on your website - thousands of lines of php / js code, mysql backend and AJAX tieing it together, some graphics routines etc, so I am no drooling n00b when it comes to coding.
How easy is it to develop basic stuff in WM?
I have access to MSDN, so I can get Visual Studio (2005 for sure, maybe later versions), so I think I have access to the apps I would need. I just ordered some books to help me along, but was wondering if I would likely face a steep learning curve.
All the stuff I want to do is today screen plugins - was thinking of having a bash at writing my own quick contacts plugin - *very* basic - just a vertically scrolling list of names over a transparent PNG button with maybe photos from the address book - I want it to be able to scroll by vertical gesture within an ultimatelaunch tab - is this likely to be quite easy and quite a good "first app" to program?
I was also looking at writing a lite repacement for phoneweaver as the only feature I use is to turn on BT when it detects power but no activesync (ie auto turn on BlueTooth when I am in the car and the device is cradled) - maybe a hack to force the keyboard backlight on in the same situation.
I have bought:
Microsoft® Visual C#® 2005 Step by Step (Microsoft)
Microsoft® Mobile Development Handbook [Paperback] by A. Wigley; Daniel... (Microsoft)
Comments / suggestions?
Click to expand...
Click to collapse
Hey!
Congrats on getting your hands on with Windows Mobile...
The easiest way is to download Visual Studio 2005(2008 You have it on MSDN) - and create a new application with it.
It's sooo easy if you know your object oriented programming, as long as you want to create ordinary "office" applications... But if you want to do more advanced things(like creating a today-plugin) you need to go over to c++(even though you can download a .net home-plugin-container which acts like a "loader" for your plugin written in c++) - and also, if you want to create good GUIs, I think you are better off with c++... But then again, I think you need a bit more effort in learning c++ then using c#...
Hope this helps...
Still slogging my way thru this...
I got hold of an MSDN disc, first off I installed visual studio 6 - bad move.
Had to uninstall before trying to install VS 2005, now I think it has screwed something up, every time I try and create a "Smart Device Win32" project, I get a "Project creation failed" error. I may have to re-GHOST my OS to get rid of it
So much time just finding out what apps I need and what options to choose to start a project...
I found http://channel9.msdn.com/wiki/default.aspx/MobileDeveloper.HomePage which seems helpful
Thanks for responses!
Evilc, you link of msdn is excellent point, many thanks!
I have also just started programming in C++ ..i dnt have any knowledge of any type of codes..i learned every thing frm MSDN libraries ( i have many many of them caz i have VS 2006 VS 2005 and VS 2008 )..i recommend you to work with C++ because it uses less system resources and is fast..hope this helps..check out my Kitchen coded in C++ ( link in signature )
Yeah, I think C++ is definately more what I am looking for from what I have learned thus far.
Re-Ghosted OS - totally fresh XP SP2, installed Visual Studio 2005, still the same error. GRRR!
Visual C++ --> Smart Device --> Win32 Smart Device Project == "Project Creation Failed"
Other Languages --> Visual C# --> Smart Device --> Windows CE 5.0 --> Device Application == Project created OK.
Some posts I have found on the net say it is an IE7 issue, I may try uninstalling that or flashing back to an OS image with IE6 only, but this is really winding me up and taking a *lot* of my time...
I uninstalled IE7 and the problem went away. Woohoo!!
starting programming windows mobile
hello
1. see my web site.
2. see my book recommendations, especially the 'programming windows ce' by douglas boling. It has an example for many things and a today sample too. Most is based on visual c++ 3.0/4.0. Embedded Visual C 4 can be loaded free of charge at ms.
regards
josef
Nice site, thanks.
The windows mobile 6 sdk actually has a today screen sample, along with samples of most of the things I need to do.
neofix said:
It's sooo easy if you know your object oriented programming, as long as you want to create ordinary "office" applications... But if you want to do more advanced things(like creating a today-plugin) you need to go over to c++(even though you can download a .net home-plugin-container which acts like a "loader" for your plugin written in c++) - and also, if you want to create good GUIs, I think you are better off with c++... But then again, I think you need a bit more effort in learning c++ then using c#...
Hope this helps...
Click to expand...
Click to collapse
Are we using the same language?? Cos this (C++ Win32 for Mobile Devices) is by far and above the most difficult programming language to get into that I have ever tried. Yes, worse than ASM.
Trying to code an app that prints "Hello World" has taken me over 5 hours with no success yet - most languages I have a go at it's 5 minutes.
From http://msdn2.microsoft.com/en-us/library/ms901121.aspx :
Code:
int DrawText(
HDC hDC,
LPCTSTR lpString,
int nCount,
LPRECT lpRect,
UNIT uFormat
);
It gives a brief description of what the parameters are, but absolutely no examples and no explanation of what all the parameters do or how to initialize them, so even browsing an example is no use to me.
u can simply try
MessageBox::Show(" your message ");
ather90 said:
u can simply try
MessageBox::Show(" your message ");
Click to expand...
Click to collapse
Isn't that .NET ?
I thought the consensus was that Native Win32 or whatever it is called was the better way to go?
This is part of the problem. I cannot even work out what to put in a search engine to pull out info on the right "flavour" of C and for the pocketpc. It's *so* bewildering.
Hello evilc.
First I noticed you have some trouble with VS 2005. It probably won't be easy now, but if you ever get to format your machine again don't install it (unless you absolutely need some other features).
For C / C++ programming for WM device I strongly recommend eVC 4 as it is much lighter and responds quicker. (It's a free download as well)
Second, though you can program for WM in C# and VB .NET which are both .NET Object based languages and are probably much closer in form to PHP and Java then C, you can not write system components such as today plugins in those languages.
You need native code so C / C++ is the only way to go.
(Actually, there is a trick to combine C# and C++ DLLs to create a today plugin where C# will do the main stuff, but its pretty complicated)
What you need is to learn basic Win32 programming and using the windows API. They are almost identical for Windows Mobile and Desktop windows versions so any book on Win32 should teach you the basics.
(Personally I started with MS book on MFC and studio 6 but I would not recommend it)
Finally:
I would gladly explain the parameters of DrawText but I am not quite clear on how much familiarity you have with the Win32 mechanics, since the languages you are used to obscure them unlike C which gives you extra power but also makes you work much harder to get anything done.
Do you know how to handle messages, and how windows manages all abjects using handles? Any familiarity with GDI?
If not, it will be pretty difficult to explain.
levenum said:
Hello evilc.
Click to expand...
Click to collapse
Hello! <waves>
First I noticed you have some trouble with VS 2005. It probably won't be easy now, but if you ever get to format your machine again don't install it (unless you absolutely need some other features).
Click to expand...
Click to collapse
I tracked down the problem when I got home and installed on my desktop. When doing it on the laptop, whilst installing SP1 for studio 2005, I had hit "Not Now" to a reboot request and it had said installation failed. When I installed SP1 on my desktop and said "Yes" to the reboot request, the problem went away, so I guess it was fixed in SP1 but the installer is a bit picky.
For C / C++ programming for WM device I strongly recommend eVC 4 as it is much lighter and responds quicker. (It's a free download as well)
Click to expand...
Click to collapse
Wish I had that advice before as I wasted a day messing around with an MSDN CD, trying to work out what to install and what not. So does the eVC 4 download include an IDE? If not, what do you use?
Second, though you can program for WM in C# and VB .NET which are both .NET Object based languages and are probably much closer in form to PHP and Java then C, you can not write system components such as today plugins in those languages.
You need native code so C / C++ is the only way to go.
(Actually, there is a trick to combine C# and C++ DLLs to create a today plugin where C# will do the main stuff, but its pretty complicated)
Click to expand...
Click to collapse
You don't have to tell me twice to avoid the bloatware ****e
What you need is to learn basic Win32 programming and using the windows API. They are almost identical for Windows Mobile and Desktop windows versions so any book on Win32 should teach you the basics.
(Personally I started with MS book on MFC and studio 6 but I would not recommend it)
Finally:
I would gladly explain the parameters of DrawText but I am not quite clear on how much familiarity you have with the Win32 mechanics, since the languages you are used to obscure them unlike C which gives you extra power but also makes you work much harder to get anything done.
Do you know how to handle messages, and how windows manages all abjects using handles? Any familiarity with GDI?
If not, it will be pretty difficult to explain.
Click to expand...
Click to collapse
No GDI Experience. I take it this would be the library of choice for drawing the screen of a today screen app? Stuff like the HTC Home clock or the new Face Contacts - they would likely use Native C++ and GDI? Doesnt strike me as something you would do with a form.
Also, anyone got the skinny on vertically scrolling by click-and-drag inside a today screen app? Just a case of enabling a parameter? Has to be coded manually? Best way to do it smoothly? If you have seen the Conduits Pocket Player 3.x browse list - how it "eases in" and "eases out" at the ends of the list, has inertia so you can "flick" down the list, the alphabetical bar instead of the regular scroll bar - is that all coded manually or is there an api or something that can help?
Thanks for the help!
I just noticed your apps in your sig - checked out LVM time - noticed there was source - wooohoo! I generally pick these things up by example.
All that code just for a (configurable) clock on one line - wow. Great though, a really good example of a today app - minimal enough in functions so it is easier to suss how it all slots together, but full featured enough (implimented example of an options screen - yay!) to show how to do various things.
And Gnu as well! Nice, this will be the basis of my first test project too I think - at least now I have a framework to test out what I want to do and how to go about it without having to work out how to code the basis of the application.
I thank you from the bottom of my heart sir.
I tried to build it in VS2005, but I got a
fatal error C1083: Cannot open include file: 'todaycmn.h': No such file or directory
A quick google search showed todaycmn.h was part of the SDK, I found the file, dropped it into the headers section of the project, but no joy. I will probs just try eVC.
Oh, and having developed a today plugin, maybe you can answer this one:
As far as I can tell so far, debugging isn't very easy with a today app - something to do with the fact that the dll is not releasable? Is this an issue I will come up against? I hope its not a case of "reinstalling" the app each time you want to test... I was thinking maybe along the lines of have it as a normal app for debugging, then make it a today plugin when you want to build to use it?
I dunno, probably trying to run before I can walk, my books shoulda been here today, oh well. Sorry for all the questions...
@evilc:
Are you using standard Win32 or MFC?
You may want to try using MFC since you get the flexibility of native development but with some nice class libraries that make your life easier.
As for click and drag behavior, that is usually implemented by handling the WM_LBUTTONDOWN, WM_LBUTTONUP and WM_MOUSEMOVE.
When you get wm_lbuttondown you set a flag that says the user is dragging. You use wm_mousemove to update the stylus position as long as this flag is set, then you unset it on wm_lbuttonup.
That's the basic idea anyway. Someone made a post about gesture recognition in this forum a few weeks ago with sample code. You should see if you can find that.
Managed Today Screen plugins
See:
http://msdn2.microsoft.com/en-us/library/ms839442.aspx
for some background on the concept.
And:
http://www.christec.co.nz/blog/archives/279
Outlines what I think is a very ingenius technique for managed today screen plugins.
For those of you that want an easy way to make a today screen app in c#. Chris did all the C++ work for you.
Also I forgot to mention that the SDK samples cover all most every application type you can think of. Most of the good ones are Win32 though.
Also, keep in mind that you can use P/Invoke from your C# apps to call native APIs. So don't let people tell you you need to use C++ just because you can access more api's. I will say that you should use C++ for games, or other apps that require high speed or advanced GUI's (it is VERY hard to do interesting gui techniques with C# and interop, trust me).
And finally, I would highly recommend using the most recent version of visual studio you can get (especially if you're using vista), unless your machine can't handle a newer version. I say so because visual studio gets more and more powerful as an editor with each new iteration and I personally can't go back after I get used to the new features they introduce. And the new versions are almost necessary if you're going to do .net development.

Fastest/Lightest way to code WinMo?

Hi,
I'm the author of a fairly popular j2me chat application, and I've been pondering making a native WinMo version for a while now. I've thought about a .net port, as it would probably be easiest, but all the .net programs I've used seem dead slow. Or am I totally off base with that?
Is there another environment I should look at as an alternative? Keep in mind, I don't have visual studio.
jonnycat26 said:
Hi,
I'm the author of a fairly popular j2me chat application, and I've been pondering making a native WinMo version for a while now. I've thought about a .net port, as it would probably be easiest, but all the .net programs I've used seem dead slow. Or am I totally off base with that?
Is there another environment I should look at as an alternative? Keep in mind, I don't have visual studio.
Click to expand...
Click to collapse
You can still stick with j2me, you'll just have to change a few things to make the program compatible with the java midlet managers for WinMo. You should read up on the Mildet Bible: http://forum.xda-developers.com/showthread.php?t=339579
Hope this helps
From testing open source apps and they ones I have made I found that C++ is faster and c# is easier but a little slower. I used c++ for along time but have moved on to C# and love it.
u can just develop in any .net language, then use tool like SmartAssembly to optimize and convert the code to binary.
jonnycat26 said:
Hi,
I'm the author of a fairly popular j2me chat application, and I've been pondering making a native WinMo version for a while now. I've thought about a .net port, as it would probably be easiest, but all the .net programs I've used seem dead slow. Or am I totally off base with that?
Is there another environment I should look at as an alternative? Keep in mind, I don't have visual studio.
Click to expand...
Click to collapse
Hello, I strongly recomend to use c++ for winmo dev.
cheers,
Hlov
The fastest and leanest method is C++, available in Visual Studio Professional, or as a standalone free download as Embedded C++ version 4. The development models are MFC, (Microsoft Foundation Classes), ATL (Active Template Library), or good old fashioned WIN32.
Of these WIN32 is the leanest, all the others, including .NET are wrappers around it. If you haven't used or seen WIN32 before, expect a pretty steep learning curve. Look at the Hello World example it generates, to try and figure out what the hell is going on. Basically you respond to WM_XXXXXX messages fired at your application by the operating system. Limit the main menu to two items, and WinMo 5/6 will display it correctly, with the main menu options either side of the keyboard/SIP icon, and accessible by the left and right menu buttons. Otherwise it will switch to a WM 2002/3 menubar, which you then have to click on to use.
If you want to go any lower down than this, you will need to brush up your ARM assembly language.
Unless you are developing graphics intensive applications, using c# is fine for applications. C++ is necessary if you are writing games and the like but the SLIGHT performance decrease is not that big of a deal otherwise.
Soul_Est said:
You can still stick with j2me, you'll just have to change a few things to make the program compatible with the java midlet managers for WinMo. You should read up on the Mildet Bible: http://forum.xda-developers.com/showthread.php?t=339579
Hope this helps
Click to expand...
Click to collapse
I'm using J2ME polish, so I can (and have) built a build specifically for WinMo, but I want a native version so I can multitask (can't do that with Esmertec) and I'd also like to develop a homescreen plugin.
My app is here:
http://www.buildhigh.com/jonnychat/
If anyone has any suggestions on what I should do with a port, I'd love to hear them.
stephj said:
The fastest and leanest method is C++, available in Visual Studio Professional, or as a standalone free download as Embedded C++ version 4. The development models are MFC, (Microsoft Foundation Classes), ATL (Active Template Library), or good old fashioned WIN32.
Click to expand...
Click to collapse
It's been a long time since I've done standard Win32 development, and I really don't plan on going back down that road again. For starters, I imagine Visual Studio would be a dog in a VM (I only run windows in a VM these days, won't run it on actual hardware if I can avoid it).
It's looking like I"m going to try C++ or C# for this. I'd like to do C# because that's pretty close to Java, but I also have moral qualms about using a language designed to usurp a good and popular language just because MSFT didn't develop it.
Decisions, Decisions....
You can also try using Ruby with the Rhodes framework: http://www.rhomobile.com/home
Or you can try using Mysaifu which may allow multitasking (haven't tried any of my programs on it yet): http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html

Categories

Resources