Can I develop software to WM5 but no .Net frameworks ?
Of course!
In fact it is much better to use native code on WM devices because it is faster and takes up less resources.
If you already know C / C++ go to MS site and download the free eMbedded C++ 4 and the Pocket PC 2003 SDK (don't mind the OS version).
Also if you have VS 2005 download the WM 5 SDK and create a smart device project in C++.
1 cool think about .net though is i had a sudoko or whatever it's called
program for pda and the same exe workd on pc too
but all in all .net is a slow as java though on pocketpc the .net maybe better implemented then the java vm's
levenum said:
Of course!
In fact it is much better to use native code on WM devices because it is faster and takes up less resources.
If you already know C / C++ go to MS site and download the free eMbedded C++ 4 and the Pocket PC 2003 SDK (don't mind the OS version).
Also if you have VS 2005 download the WM 5 SDK and create a smart device project in C++.
Click to expand...
Click to collapse
hi levenum,
i have VS 2005 and WM 5 sdk installed.
well my problem is C++ which i never read seriously but i have a good
working base of C on which i had developed two simple game.
How can i implement the code in VS2005/WM5SDK with minimal
interaction of C++ ?
How can i get working base on VS2005/WM5SDK?
Can u suggest me a tutorial or any free book?
with c vs. c++ it's really much the same ++ is just an expansion with nativ class and other object orientented features
any c program should be able to compile using a c++ compiler
but i doubt you can write CE programs or even windows programs without using any kind of class related code
heck you cant even do that in basic (evil language) or c#
the internet is soo full of free programming stuff it's not even funny
buying paper books is a thing of the past imho unless you want to read while on the toilet and dont have a laptop or pda
http://www.brpreiss.com/books/opus6/
good googling for more
Actually, except for M$ nasty invention called "COM" there is nothing in Windows API that requires C++.
In fact I rarely use classes unless I am building an MFC app to save time.
Also, (can't remember the link for the life of me) but there is some way of accessing class objects in pure C using some struct tricks.
So basically you can leave fine without the ++, but you may need to work a little harder.
You should just create a basic smart device project. VS will generate a "hello world" app for you and you can see how it works. Moving from C to C++ should be very easy.
It's C# that is no longer a real programming language
P.S.: Did you know most of Win CE DLL are actually written with ANSI C?
levenum said:
Actually, except for M$ nasty invention called "COM" there is nothing in Windows API that requires C++.
In fact I rarely use classes unless I am building an MFC app to save time.
Also, (can't remember the link for the life of me) but there is some way of accessing class objects in pure C using some struct tricks.
So basically you can leave fine without the ++, but you may need to work a little harder.
You should just create a basic smart device project. VS will generate a "hello world" app for you and you can see how it works. Moving from C to C++ should be very easy.
It's C# that is no longer a real programming language
P.S.: Did you know most of Win CE DLL are actually written with ANSI C?
Click to expand...
Click to collapse
thanx,
i had already compleated "hello world"
and C++ is really not much away from me
actually i only have a single problem:
How can i get working base on VS2005/WM5SDK?
Click to expand...
Click to collapse
well i think it is more exactly Win CE API knowledge which i require.
How Do I Start Cooking Roms
I Know A Bit Of C++ ,how Do I Start Cooking My Own Roms
tawanda: first off - your question has nothing to do with this thread, if you have an unrelated question you should start a new thread BUT search first to make sure it was not asked and answered a 1000 times!
As for your question - cooking ROMs is not programming - it helps to know a programming language but what you really need to do is familiarize your self with the tools used to pack and unpack as well as dump and flash ROM images.
Note that these tools are different for different devices or at the very least need to be configured differently.
I recommend you start by reading the WiKi.
After some years of absence from the programming world I think now I've time enough to start again. I'm familiar (but a bit rusty) with assembler, C and C++, but I think I have start more or less from the beginning.
I already installed Visual Studio 2005 and the WM05 and WM06 SDK. Now I'm not sure whether I should use C# or C++. The big difference is that C# needs compact framework?
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.
I second levenum's recommendations -- I've been programming big Windows for 15 years and have managed to avoid .NET. Of course most of what I do these days is NDIS driver programming, so it's mostly straight C, with C++ for supporting user-mode code.
Avoid MFC -- it adds a bit of overhead which is OK for big Windows, but not for WM. If you're going to use a C++ framework, I highly recommend using ATL/WTL -- it's what MFC wants to be when it grows up.
I'm looking at my visual studio 2005 and wanting to covert my c# application to C++...
I clicked on a new project and i'm looking at the various options in Visual C++ for Smart Devices. There are a few to choose from... how do I know which one I want to choose?
ATL Smart Device Project
MFC Smart Device Application
Win32 Smart Device Project
MFC Smart Device ActiveX Control
MFC Smart Device DLL
Can you guys tell me the difference between those options and which I should use to develop for WM6?
Thanks,
Derek
imho then a good pro of c# vs. c++ is the nice object lib that .net give
mfc is pretty crap in every respect and if you do pure stk
it's more work to make it object orientated
"ATL Smart Device Project
MFC Smart Device Application
Win32 Smart Device Project
MFC Smart Device ActiveX Control
MFC Smart Device DLL"
depend on what you want to do
i mean DLL is not a program but a lib that other programs can access
but then today items are dlls
win32 is pure win32 stk where you pretty much have to do all the prev work to get your application up and running
mfc is microsoft foundation clases it's an somewhat dated object lib from ms which makes making an application faster it pretty much give you a dialog and let you place components such as button on it
ActiveX is an somewhat evil internet programming platform
atl http://en.wikipedia.org/wiki/Active_Template_Library
you can prob find more info about everything you want more info about
from wikipedia too
thanks for the info rudegar!
Hi!
I try to integrate an external library into my vs2005 project while using the Windows Mobile 6 SDK. Of course, I added the additional directories and dependencies to the project settings, but I get some LNK2019 errors anyway.
So I created a dump of the *.lib files using "dumpbin.exe" and discovered that all function names start with a leading underscore. I found some precompiled parts of the library where there are no leading underscores in the function names and I can call them without any problems. But if I build those parts of the library on my own, there again are the LNK2019 errors and the "_functionname()" convention in the *.lib files.
Is there either a way to avoid those underscores when compiling the library or to call those function out of a windows mobile application?
Thanks in advance!
This looks a bit odd.
C++ decorates exported functions unless you add a def file to the project, but there is always way more garbage in the names.
What I don't understand is, why do you have a problem using a function that starts with an underscore?
Such names are perfectly acceptable in C / C++, in fact some C native functions like _wfopen start with an underscore.
What language are you programming in?
Also it might help find the solution, if you tell us what library you are using. Is it something available for download or your own creation?
Thanks for your quick reply.
I am working on a porting of the intel openCV computer vision library and I try to include it into a VS2005 C++ projekt created with the wizard for windows mobile 6.0 sdk for testing.
It seems that the problem appears when I switch the system to "/SUBSYSTEM:WINDOWSCE". Otherwise the library works perfectly.
I'm looking at developing a biomonitoring application, the setup to consist of a 24 bit ADC with an Atmel AVR microcontroller sending data via Bluetooth to the mobile phone for display. I don't have a large budget so am looking for freeware or something a lot cheaper than Visual Studio to develop the application to run under WM5/6. It has to be compiled due to the amount of processing needed.
I prefer to write in C/C++ . Pascal would be a 2nd choice then anything else except Basic.
For Windows development I use Borland C++ Builder and have used Delphi. On the embedded side I use Codevision AVR C compiler.
I'd appreciate recommendations for development software. TIA.
I got this C compiler to work a while ago (managed to recompile a few of my desktop PC SDL projects to ppc):
http://sourceforge.net/projects/wince-xcompile
[EDIT]
Sorry, ceGCC is what i was using, not xcompile:
http://cegcc.sourceforge.net/
[/EDIT]
It's free, but it's for linux (if you don't have linux, that might be a good reason to give it a try ). Also, the problem is that it doesn't have an IDE of its own, and no graphical interface editor.
There's also pgcc, allowing you to compile applications directly on your pocketPC, but i wasn't able to make it compile any GUI application, only console ones (but i didn't really spend much time trying). There's a working link and a short info on how to use it here:
http://www.aximsite.com/boards/business-development/135816-pocket-c.html#post1187340 (sorry for linking to other forum, but i didn't want to post someone's tutorial as mine).
Anyway, i'd love to hear about any other free alternatives as well
you could try embedded visual c++.
it is free but you can not debug on devices powered wm5 or higher. you will need the ppc 2003 sdk and win xp prof or 2000.
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.