Short guide to a better understanding of (the) windows - Windows Mobile Development and Hacking General

An article in multiple parts, that descriebes some techniques that can be used to extend the control one has over the system interfaces and also over some foreign applications.
Part 1: Control over the system windows
The second part of the "A short guide to a better understanding of (the) windows", this one is about Subclassing.
I have also prepared a sample, that can be compiled with VS2005 for pocket pc 2003/2005.
Part2: The Article / The Sample
teksoftco.com/forum is opened for your suggestion or this topic is also a good place to post your thoughts / questions.
Bests,
Raul Tinca

niiiiiccceee. Probably you should include a guide for others to start writing programs for PPC without forking out tons of $$ for Visual Studio

The sample can be compiled with eVC4 with SP4 also.
Cheers,
Raul Tinca

Related

Reading the registry with Visual Studio 2003

I'm developing a small application for my HTC Wizard, which I'm programming with Visual Studio 2003.
I need to open the shell application for M3U files, which I've tracked down to HKCR\M3UFile\Shell\Open\Command... but now I can't figure out how to either read that key to open the relevant player, or to execute the m3u file directly.
Because I'm using VS2003, I don't have access to system.win32 with the compact framework, so what techniques have others of you used to read or write to the registry?
Also, just as a side note, how do you find the current path?
Thanks,
Jon
There is no real concept of current path in CE. If you want to know the path your EXE is in, use GetModuleHandle(NULL) -- it'll return the fully-qualified path name of that process's EXE, from which you can parse out a path.
I'd advise against using the compact framework; .Net is a loser on PPCs as it just slows things down, taking up extra memory & cycles on a platform where both are in short supply. Use the real Windows APIs instead -- i.e. call RegCreateKeyEx/RegSetValueEx.
And if you choose to use Win32 API you can just call ShellExecuteEx()
and not mess with the registry.
RegQueryValueEx is what you need. Just set the appropriate type and buffer.
V
I'm always willing to learn new stuff... are there any good resources on programming for PPC without using .net?
I know there's EVC++, but I've installed it, and now I don't know what to do with it!
Regards,
Jon
JonTheNiceGuy said:
I'm always willing to learn new stuff... are there any good resources on programming for PPC without using .net?
I know there's EVC++, but I've installed it, and now I don't know what to do with it!
Regards,
Jon
Click to expand...
Click to collapse
You can either use EVC++4, which is free but has an aged, not-so-standard C++ compiler (since it based on VC++6...but it only means a few quirks), or you can use Visual Studio 2005 which is supposed to replace EVC.
Jon, not to state the obvious, but there are many c++ tutorials for the PPC on the interweb.
What kind of experience do you have?
V
I have no prior experience with C++ - I bought the C++ For Dummies book in a charity shop a month or so ago, but it seems to refer to software that isn't available any more!
My core experience is with PHP, and recently I've been more interested in VB.NET for small apps at work, but most of what I want to do is with Windows Mobile - for which, all I have is Visual Studio 2003, and my co. won't fund me buying VS2005 as I got it for an old project that I still maintain, and anything new I need to write for work I can do with VS2005 Express...
That said, I'm not afraid of learning a new language, especially something as powerful as C++.
C++ for dummies is excellent, the best I've come across so far.
Have a read through this:
http://forum.xda-developers.com/viewtopic.php?p=209136#209136
I'm currently unlearning and then relearning my c++ - one thing I've learnt coming from other languages - c++ requires discipline. It's not about shortcuts, you build up from the basics and keep going steadily. But you need to be logical, and prepared to put in the effort. So discipline - it's been a long time since I've had to think about that!
V

Developing Software getting started

I looking for advice on getting started developing simple programs for WM5 - I guess I'm not really bothered if they don'y make use of the advanced features
The options appear to be
#1 MS Visual Studio 2005 (90-trial or $$$)+ WM5 SDK (free)
#2 MS Embedded Visual C++ 4.0 SP4 (free) + WM2003 SDK (free)
#3 MS Embedded Visual C++ 3.0 - 2002 edition - PPC2002+SP2002 SDK included (free). Also include Embedded Visual Basic.
As my recent experience is VB I guess option 3 is best C++ learning curve might be a bit steep given the just for fun motivation
but ..... there are other options saw this today
PPL - Pocket Programming Language
Write software for your PocketPC and PC in minutes using our new programming language. PPL is a fast and easy-to-learn programming language that is fully object-oriented. PPL runs on all Pocket PC using PocketPC 2000, 2002, Windows Mobile 2003, 2003SE, and 2005 (VGA compatible). PPL also runs on Windows 2000, XP, 2003 Server desktop computers. Programs written for one system are 100% compatible with the other.
Write high quality games in no time using our easy-to-use GameAPI that incorporates physics, isometric display support, pixel-perfect collision detection and so much more...
Design forms visually on your PDA or desktop computer with the visual form builder. Edit components properties and code events within the same interface. PPL is a complete development environment.
Starting as low as $39.95 USD for a limited time.PPL - Pocket Programming Language
Write software for your PocketPC and PC in minutes using our new programming language. PPL is a fast and easy-to-learn programming language that is fully object-oriented. PPL runs on all Pocket PC using PocketPC 2000, 2002, Windows Mobile 2003, 2003SE, and 2005 (VGA compatible). PPL also runs on Windows 2000, XP, 2003 Server desktop computers. Programs written for one system are 100% compatible with the other.
Write high quality games in no time using our easy-to-use GameAPI that incorporates physics, isometric display support, pixel-perfect collision detection and so much more...
Design forms visually on your PDA or desktop computer with the visual form builder. Edit components properties and code events within the same interface. PPL is a complete development environment.
Starting as low as $39.95 USD for a limited time.
http://www.pocketpcthoughts.com/forums/viewtopic.php?t=52935&highlight=
there must be other options?
I guess SharpDevelop 2.1
develop is an Open Source IDE written in c# and running on the Microsoft .NET platform.
http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.CompactFramework2Development
Opinions welcomed
The old VB for CE (and eVB) were rubbish. Unless it changed in much later versions these were just VBscript, not actually VB. Very limited functionality indeed.
All the C++ versions work OK (and I still use eVC++ 4 sometimes) , but of course C++ is a fairly fiddly, low-productivity language. It's not really the ideal language for having a play.
So, sorry to say, of the Microsoft ones VS2003/VS2005 using VB.net or c#.net are by far the easiest, and most productive of other offerings.
Never tried the non-MS ones.
Stuart
The real trouble with embedded VB is the runtime library it requires which will not run on WM 5 (it barely works on WM 2003).
I remember seeing a cheap and according to the manufacturer powerful VB compiler in some post on the forum, but for the life of me can't remember the name. It compiles to native code and doesn't require a run time.
Now it's true that C++ takes more work to get things done, but it also gives you more power. Even if you just program for your self you may one day want to create your own today plugin or even keyboard and that can't be done in .NET
My recommendation: Spend a little time and learn MFC. It has a lot of similarities to the .NET languages and saves a lot of work for C++ programmers.
[OT] i've also just started "trying" to create applications using vb.net on VS5. Am i allowed to ask questions here? Or is there a thread for posting vb or c questions?
Never seen a specif thread for these, and I am here quite often for a long time.
If you have a specific question you can even open a new thread, no need to clatter several unrelated issues in to one giant thread just because there about same programing language.
Just do a quick search first to make sure it's not something that was asked a 100 times and away you go.
Thanks I guess that leaves me with
PPL - Pocket Programming Language and SharpDevelop 2.1c#
thanks levenum. i will be doing that
starfish_001 said:
Thanks I guess that leaves me with
PPL - Pocket Programming Language and SharpDevelop 2.1c#
Click to expand...
Click to collapse
I can highly recommend ppl, seeing as I just entered the games competition and had my entry done in just over twenty days, without any real windows based programming background.
it's relatively cheap, and the support is great, with questions on the forum getting a very fast turn around.
Here's another to look at Basic4ppc
http://www.basic4ppc.com/
Basic4ppc and ppl are both great little applications
what is MFC ?
levenum said:
My recommendation: Spend a little time and learn MFC. It has a lot of similarities to the .NET languages and saves a lot of work for C++ programmers.
Click to expand...
Click to collapse
trying ot choose on which programming language I will begin with and I was wondering what is MFC ?
Thank you
MFC == microsoft foundation Classes --- library
it's a library which encaption the gui and other general purpos functionalitet of windows in a set of classes that makes it
easier to get ones program up and running without having to
worry about WinMain and a messageLoop
http://en.wikipedia.org/wiki/Microsoft_Foundation_Classes
microsoft have long since abandoned mfc as their pref library
now they are pushing .NET
problem is that .net is slower more so on devices like pda's
MFC really means
Mother F*cking Crazy, which it will drive you! All joking aside it is probably the best thing to develop in. I've writen small apps with it on every CE since 2.11 and even on XPeMbedded (which I'd avoid like the black death).
I've had great success with C# on WM5 and Pocket PC before. Even wrote a handheld POS terminal. Microsoft is really behind .NET and it will be supported for a long time. It's very easy to learn and the documentation is great.
Visual Basic .NET will do the same job, but keep in mind the switch from VB6 to VB.NET is HUGE. Just because some of the code looks the same doesn't mean it is. I'd take the time and learn C#. If you're really serious register as Microsoft ISV (their program is Empower for ISVs). For $375 you get basically everything MS has written in the last 10 years. You get 5 development use copies of anything you want including Visual Studio 2005 Professional. All you have to do is create an app for a Microsoft system in 18 months.
PM me if you need any more details.
Thanks
starfish_001 said:
Thanks I guess that leaves me with
PPL - Pocket Programming Language and SharpDevelop 2.1c#
Click to expand...
Click to collapse
Thank u bro

Coders new to WM5 "help" (advice)

Hi,
I have a fair background in various coding languages, and there are a couple of programs I want to try and build.
However, while I can usually pick up and understand a language quite easily the problem I usually find is a lack of knowledge of the objects available to make life easier and the functions which are available.
So far, I've sat around and got a setup which I think should allow me to write and compile WM5 applications and today plugins, but I have suddenly found I am missing that "thing" that made writing in other languages easier - effectively a "Cheat Sheet".
What I would appreciate from the other coders with experience in writing software for WM5 is a list of what windows or books you have open for reference when coding. Is it just MSDN, is there a specific page that you have bookmarked or do you just google for it every time?
Any further advice (like good compilers I might have missed) will also be greatly appreciated.
Thanks in advance.
I'd like to hear from others too about this..
So far, My buddies for development help have been:
1. Search in MSDN
2. Search in Google
3. Ask on xda-developers
4. Search in MSDN forums and usenet groups for pocket pc developers
5. A book (that i dont refer to too often) whose name goes smthing like "Programming for Microsoft Windows CE .net" by Douglas Boling (Its not for .net development, it covers native development mostly. Windows CE .Net refers to a version of CE)
6. I also have another book that i have not even opened till now. It is solely for .net development (which is not my forte). Its by Wrox Publishers. If I remember the name correctly, it goes smthing like "Professional Microsoft Smartphone Programming"
There is an exellent documentation on .NET & Native Code on MSDN.
Then there are samples as well, again on MSDN.
For a today plugin, there is a very good sample by levenum which u can easily find in this section of the forum.
For me its always been google & this forum, no boooooks !!!
or
www.codeguru.com
in most cases programming for pocketpc's is like programming for pc's
Thanks for the replies guys. I see what you mean, MSDN is rather good. I was beginning to think it was just WM6, but I eventually found the section on WM5 (which I am planning on coding for given my phone is WM5). Their Wiki also had some good info on it too. Don't know whether these will be my coding buddies yet though....
shantzg001 said:
I'd like to hear from others too about this..
Click to expand...
Click to collapse
I'm glad someone else is interested. TBH I am surprised there is not a sticky at the top of the forum with this information in or a link to the Wiki for further details, but I could only find details of Development Tools on the wiki.
shaileshashar said:
For a today plugin, there is a very good sample by levenum which u can easily find in this section of the forum.
Click to expand...
Click to collapse
Thanks for this pointer. I found two (here and here) which look promising. Don't know if there are any I missed....
Just a small tip when searching in MSDN... add ce in the search pharse. For e.g., "ce WM_TIMER" will give you the CE related sessions at the top.
I like www.pocketpcdn.com - articles and code examples for Pocket PC and Smartphones arranged by categories.
Also www.codeproject.com has been helpfull at times.

advice for beginner developer :)

I have Visual c# and Visual basic development environment and I want to try my chance in developing small tools for WM6.
I am looking for advice on how to begin developing.
What is required to develop WM6 software ? How can I write a "hello world" code in basic steps ?
Thanks...
also, which version of Visual Basic or Visual C# would you recommend for this ?
Visual Studio 2005 will do the trick.
After that, get the SDK for your intended platform. WM2003,WM5 or WM6. And create a new project, select VB and look for your target device environment. Create a form based application, double click the form, and in the formload sub add this code:
Msgbox("Hello World")
This will pop up a message box saying hello world. I wasn't incredibly detailed, since I'm assuming you've done some software development on different environments before, correct?
thanks.
you really did explain enough to begin. I believe I can handle it.
just one question:
where can I get the WM6 SDK ?
http://www.google.dk/search?hl=da&q=WM6+SDK&btnG=Søg&meta=lr=lang_da|lang_en
finally I have the environment set up.
first basic tries (hello world, simple calculations etc.) were successful.
Then I went to "How Do I" pages of Microsoft and tried some advanced teaching examples.
I have a little problem with WM6:
I couldn't get the following value to a greater value than 0 no matter what I 've done:
Microsoft.WindowsMobile.Status.SystemState.ConnectionsNetworkCount
or
Microsoft.WindowsMobile.Status.SystemState.ConnectionsCount
I have activesync and wlan connected; I even connected to gprs but this value is always 0.
any idea ?
is it different on some devices ?
I still couldn't figure out where the problem is.
I think I am using a wrong system property but which one is the correct one ?

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.

Categories

Resources