[Question] SIP Tutorial? - Windows Mobile Software Development

I've programmed in C++ before, and used all the Win32 apis etc., but I've never written a COM object in C++.
I had a look at the SIP sample in the WM6.5 SDK, and following some MSDN guides, I tried to use the wizards in VS2008 to create an ATL COM object. I think I got somewhere, because my SIP appeared in the list, however, none of my SIP functions ever got called, so I must have messed something up somewhere.
Does anybody know a decent tutorial or a blank SIP template I can look at?
Thanks

Related

Today plugins

Recently i was thinking about creating an app which would show me my remaining calltime with one of polish prepaid services. I imagine it would work like that:
1. receiving a specific text message with my account balance from my operator the app would capture it and store the value
2. after each call being made operator sends sms with call cost. this should be deducted from previously stored value. etc etc.
3. value should be displayed somewhere, like on today plugin...
seems simple, but theres a catch;] i can't code for WM5. i just got myself delphi 2006 today and i see it has limited CF support so i can create applicatons... but am i able to create Dlls? also i don't have clue about creating dll's at all, especialy those for WM5. is it even possible with .net? is there any chance for me?
i know, i know, i shoud start to use c++ long time ago, but i'm affraid it' might be a bit to late for me;]
ps. is there anything like WM5 sdk, any guide kit for programmers, specs of any kind? where to look for it? thanks for any help. please note, i'd like to become one of you guys, i could even be of some value;]
heard somewhere that today plugins
cant be written in .net
here is a link to the subject of today plugins
http://forum.xda-developers.com:80/showthread.php?t=234162&highlight=codeguru
thanks, gonna try it in a minute.
(today unbelievable happened - my wizards battery got empty )
interesting. i'll consider switching to c++. as far as i understand it's not normal C, its some kind of mobile oriented c? but no connection with .net? how does it work?
Ok.
C++ is an extension of C to include object oriented programming. The language is not specific for mobile devices, so any book / article on the subject will do for starters.
I taught my self C++ after learning Pascal (Delphi is for Pascal right?) in school and it was quite easy because the languages have similar structure.
Your second stop is to learn WIN32 programming. I don't know how Delphi deals with APIs and function exports (that's what you need for DLLs).
Basically WM programming is very similar to desktop windows programming, except for a few miner difference (like all APIs using only Unicode).
You can download a free development tool called eVC 4 from MS. It looks exactly like Visual Studio 6 if you have any experience with that.
Unfortunately system DLLs like plugins can not be written using .NET but if you search MSDN (I really don't remember the link), there is an article on how to use a basic C++ DLL for the plugin and delegate all the real functionality to a .NET DLL.
Good luck.
yes, delphi is much like pascal
i know it's not that hard if you mean the structure. i just don't know how to start. in fact i got myself evc yesterday, after what you say i'll take good lok at it as soon as i prepare some room on my HD.
Delphi does well with windows api - as far as i can tell, i played with theese a bit so it shouldn't be hard to catch up when starting with c++. other thing is i never did dll, although i know how it works in general, i also used other peoples dll's in my programs. will do i hope. also, Rudegar provided us with good tutorial/example on today dlls, so i hope i'll be able to expand it. the only thing, i'm a bit anxious. you say evc is good for starters? ok, going to give it a try.
what a week, four days, four new RAD environments already
delphi is object pascal which is an extention of pascal like c++ is of c
c programs should compile without any problems in c++
Hi,
I saw a way to develop today plugins in .net : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/TodayScrn.asp?_r=1
I did not try and I guess it will slow down the device as .net is not very fast, but you can try...
Good luck

Language of choice

Just curious..What is everyone's programming language of choice when developing apps for WinMo?
Ive been working (lightly) on a VB program, which is ok, but i feel it isnt as efficient as others might be, and i know efficiency and size is a big issue on mobile devices (obviously)
Depends:
A simple program or one that can be done just using the stuff in the standard system DLLs then I will go for the pain of coding it in WIN32 C++. The resulting application runs like the wind, and can be distributed as a single executable file, no CAB, no installation projects, etc etc.
If I need any web or fancy data functionality, then it is .NET, because it is not worth the hassle of getting all this to work from levels lower down.
Having had lots of previous coding experience in C/C++ then C# is the natural choice, but as far as .NET is concerned, the actual language you code in is irrelevant. It compiles down to IL anyway and the CPU 'JIT' compiles this into its own code before it runs. Hence the performance hit when the program starts and runs.
In .NET, in essence, all you are doing anyway, is creating .NET objects, setting their properties and calling their methods, in order to get them to do what your application requires. A simplistic view, I know, but that's is all there is to it!
The language that you use to do this doesn't really matter, it is just personal preference.
I guess i assumed one language had more efficantcy than another. Like im working with VB atm, and i know it simplifies alot of things to make it easier to use, not sure if it includes all that extra code in the final build or not tho.
I would like to get more pratice with C++ and i have yet to use C# so dono whats different about that.
I would like to eventually start making programs that utilize the .net code and get my programs talking though data on the phone, but im not that advanced yet.
currently im still trying to wrap my head about making a program with a local database. The program im working on currently doesn't store any data, but i would like to to. I would also like (if i get ambitious) to have that program possibly talk to a PC (parent) program and sync with it. But that i think is a ways off.
Also, do the Mobile SDK's look different? The program im working on i started in the 5 SDK, but (obviously) doesnt have Finger friendly IU tools. I haven't looked at the 6/6.5 SDK yet (as id have to start over again i think). Does it have more finger friendly options?
In .NET CF, the finger-friendlinnes and kinetic scrolling and this all isn't available for all controls. Most of them (the classic ones) are, but if you try using scrolling for whole form, it won't work, only scrollbar will. (Probably with some playing with physicsengine and marshalling you might be able to get it working here, too).
In C++, there are numerous examples of this gestures etc directly in SDK, also many other stuff is there.
See, the main difference here is that .NET is fully equipped with stuff to get everything done fast, easy way.
In C++, you must first make this way yourself .
i am using the .net 3.5 framework tho.. Unless you mean C++ vs C#. I thought .net was an expansion on a current language, and not a language on it self (meaning i cant choose to program in .net, its an option to VB, C++ or C#)
I did toy with it, and it appears as tho your right, the forums are the same. IE drop down/combo boxes are not finger friendly. Guess id have to turn it to a button and another form with large radio button options.
C# vs C++ main difference is that C++ is compiled to native code right on first time, which makes it very fast. C# is compiled to MSIL, which is NOT native code yet. When you run c# app, the code is being Just-In-Time (JIT) compiled to native code, which makes it "longer" to load and "slower" to run (usually that makes about 20% of speeddown on classic PCs with very optimalized C++ same code - it probably already is lower, this is a bit older result of testing).
C# has those nice features that it can't get out of its memory etc, the JIT is almost unhackable, so you can't write viruses in it etc.
As far as the SDKs are concerned, there are slight differences from one version to the next but they can be quite difficult to spot.
They can become issues, when code written to run on one platform is run on one several generations away. I have a program that was written in C++ WM2003. Works under all versions of WM until 6.5.3, when the About Dialog box fails to close if the (X) button is pressed. Turns out another value has to be added to the dialogbox flags field to get it to behave properly.
This has been a feature of SDK's from WM 5.0 onwards, but the WM2003 SDK is unaware of it. You have to add it manually to the shell code created by the SDK,
Progress I suppose. The full article is here:
http://forum.xda-developers.com/showthread.php?t=635063
Treo 700xw Verizon Spanish language
Hello fellow .... I'm new to this forum
I have a Treo 700wx and I live in Mexico ...
My Treo is Verizon's company and is currently with the version 1.22 ...
My problem is that it is in English and I need to change the language in Spanish ...
Thank you for your support both the need
Greetings
stephj said:
As far as the SDKs are concerned, there are slight differences from one version to the next but they can be quite difficult to spot.
They can become issues, when code written to run on one platform is run on one several generations away. I have a program that was written in C++ WM2003. Works under all versions of WM until 6.5.3, when the About Dialog box fails to close if the (X) button is pressed. Turns out another value has to be added to the dialogbox flags field to get it to behave properly.
This has been a feature of SDK's from WM 5.0 onwards, but the WM2003 SDK is unaware of it. You have to add it manually to the shell code created by the SDK,
Progress I suppose. The full article is here:
http://forum.xda-developers.com/showthread.php?t=635063
Click to expand...
Click to collapse
I noticed something else odd. When i run the app on my pone, the resolution is off. Now everything looks ok, i just mean that when i run it on my phone, theirs alot of "white dead space" at the bottom. I can only guess this is due to the SDK's catered to phones with smaller screen resolutions (ie Touch Pro) with buttons.. Is their a way for me to switch the resolution to ultilize the full Touch Pro 2 screen size (480x320 i think)?
Funny you should mention that. I replied to a similar post a short while ago. I'm not going to type it all in again, it's here.
http://forum.xda-developers.com/showthread.php?t=637417

[Q] VS2008 beginners problems

Hi,
I have started to learn C++ and have created some programs (MinGW + Code::Blocks) for the command line and I would like to add a GUI and run it on my hopefully soon-to-have WM6.5 phone.
So I installed VS2008, Windows Mobile 6 Professional SDK Refresh and Windows Mobile 6.5.3 Professional DTK.
But when I start a new C++ project for a Mobile Device, I don't get a form where I can add buttons, etc. (sadly I have no idea about GUI programming to do it by hand). Also, the items in the Toolbox are greyed out (which makes sense considering that there is no form to add items to).
The video on MSDN ("Creating your first Windows Mobile 6 Application with Visual Studio 2008") made it look so easy - but that was under C#. I can recreate those steps, so under C# I can add stuff from the Toolbox to the form which looks like a WM device, but not under C++.
Am I missing something?
Thanks in advance!
Yep, that's about right. VB and C#, are both .NET CF languages, and as such are more or less identical. C++ is usually used for MFC, ATL or good old Win32 programming models, where the code creates the windows controls, etc and draws them on the client area.
With a bit of C++ knowledge you should be able to create the same thing in C# without too much trouble, but there are a few pitfalls to fall into along the way. C++ can also be used as a .NET language but the casts required make it hideous to read and understand. Go straight to C#.
The C++ programming models take a bit of mastering, but the code runs like a bat out of hell.
Thank you very much for your reply!
stephj said:
Yep, that's about right. VB and C#, are both .NET CF languages, and as such are more or less identical. C++ is usually used for MFC, ATL or good old Win32 programming models, where the code creates the windows controls, etc and draws them on the client area.
Click to expand...
Click to collapse
So you are saying that in C++, I pretty much HAVE to program everything by hand? (just to make sure I got you right)
With a bit of C++ knowledge you should be able to create the same thing in C# without too much trouble, but there are a few pitfalls to fall into along the way. C++ can also be used as a .NET language but the casts required make it hideous to read and understand. Go straight to C#.
Click to expand...
Click to collapse
K. I do know that C++ and C# should be pretty similar concerning the syntax. But still... any literature recommendations?
The C++ programming models take a bit of mastering, but the code runs like a bat out of hell.
Click to expand...
Click to collapse
That's why I want to stick to C++. My university prefers Java, but don't really like it and find C++ much more "elegant". However, my ideas [dreams?] about programs that I want to write eventually do involve quite some GUI. I had hoped that VS2008 would allow me to quickly get that GUI-stuff out of the way for now, since I thought I use QT for my Windows (and maybe eventually Unix) programs. But as I said, I'm still at the beginning of my learning process, where it is mostly about command line apps to learn the ropes.
Anyways, thanks again!
To be honest I only program WinMo in either Win32 C++ or C#. Although C++ and C# are quite close as far as languages are concerned, the IDE environments are completely different. Under Win32 you respond to the stream of WM_XXXXXX messages fired at your app by the operating system, one for every time something happens. If it is something your app isn't bothered about ignore it. Screen taps get converted to WM_LEFTBUTTONDOWN etc. A button is a child window of the main window, you will have to create it.
In C#, drag an object off the toolbox and drop it on the form, the IDE will maintain any events you wish to trap and use. The machine I have here only has VS 2003 on it, the 2008 machine is at work. I'll have a look at the other C++ models on it next week.
C# and Java are not too far apart, exept that C# uses the .NET framework objects.
As far as books go, I can't really recommend much as I have mastered it from the sharp end as it were, using the online help and examples for day to day, and internet trawls to tackle particular problems. Maybe others can chip in with a few ideas.
I haven't heard of QT running on Windows Mobile, but I could be wrong.
There is also MONO, which is an open source project to run .NET under Linux.
stephj said:
To be honest I only program WinMo in either Win32 C++ or C#. Although C++ and C# are quite close as far as languages are concerned, the IDE environments are completely different. Under Win32 you respond to the stream of WM_XXXXXX messages fired at your app by the operating system, one for every time something happens. If it is something your app isn't bothered about ignore it. Screen taps get converted to WM_LEFTBUTTONDOWN etc. A button is a child window of the main window, you will have to create it.
Click to expand...
Click to collapse
That sounds interesting, but sadly beyond my capabilities at the moment.
In C#, drag an object off the toolbox and drop it on the form, the IDE will maintain any events you wish to trap and use. The machine I have here only has VS 2003 on it, the 2008 machine is at work. I'll have a look at the other C++ models on it next week.
Click to expand...
Click to collapse
Yeah, this sounds much more reasonable for what I'm trying to accomplish, but also means I have to learn 2 languages instead of one (I don't want to give up C++). I guess my Windows Mobile app has to wait for a while.
C# and Java are not too far apart, exept that C# uses the .NET framework objects.
As far as books go, I can't really recommend much as I have mastered it from the sharp end as it were, using the online help and examples for day to day, and internet trawls to tackle particular problems. Maybe others can chip in with a few ideas.
I haven't heard of QT running on Windows Mobile, but I could be wrong.
Click to expand...
Click to collapse
Yeah, QT is more for Symbian. But since I want C++ for both Windows and eventually Unix, I thought QT was a good choice. At that point I did not even consider creating an app for WinMo.
There is also MONO, which is an open source project to run .NET under Linux.
Click to expand...
Click to collapse
Yeah, I've heard of it. Maybe I'll give it a try when I feel comfortable enough with the basics.
Thanks again for your reply, I'll tackle this when I feel more comfortable with C++! Very much appreciated!

[Q] [Technical] How do you call an Exported Function in a DLL without p/invoke?

How do you call exported functions in a DLL on a Windows Phone 7 device?
The current method using the ComBridge and registering the DLL is only for calling functions in an interface in a given dll so using this method to try and access an exported function simply causes the application to crash.
Anyone know a way to call an exported function without using p/invoke as p/invoking has been locked down on Windows Phone 7?
Many Thanks,
Gaz
Maybe not the answer you want to hear, but what we've been doing is calling native APIs in native code, and exposing a COM interface. As far as I know, we don't know of any other way.
I know the method you are using but it doesnt work for exported functions in a dll. The method you mentioned only works on interfaces in a dll.
lyriquidperfection said:
I know the method you are using but it doesnt work for exported functions in a dll. The method you mentioned only works on interfaces in a dll.
Click to expand...
Click to collapse
The point is that you interface with your own native COM DLL, which interfaces with native code that doesn't export a COM interface.
So to call an exported function in a dll in a ROM, I would have to write a DLL in native code to refrence the exported functions in the DLL i was looking to use then write an app to call the DLL I had written to access the exported functions that way? I have no clue in writing native code unfortunately.
Do you have a code snippit or example of how to do this? It would be much appreciated!
lyriquidperfection said:
So to call an exported function in a dll in a ROM, I would have to write a DLL in native code to refrence the exported functions in the DLL i was looking to use then write an app to call the DLL I had written to access the exported functions that way? I have no clue in writing native code unfortunately.
Do you have a code snippit or example of how to do this? It would be much appreciated!
Click to expand...
Click to collapse
http://forum.xda-developers.com/showpost.php?p=10558804&postcount=34
There are some examples in my Homebrew library that is used for the Webserver project. NativeIO is a vs2008 project compiled for Windows Mobile 6. It shows interop between platform (Windows CE) functions, and Silverlight. There is more information around on the forum. If this isn't enough to get started, you have much reading to do regarding COM.
Cool, thanks for this, ill take a look tomorrow after work.
Sent from my OMNIA7 using Board Express

Calling ProcessKeyPress(e.KeyCode) for Windows Mobile 6 in C#?

How do I call this function ProcessKeyPress(e.KeyCode) in C# for WIndows Mobile 6?
I have the original VB.net code that I am trying to translate to C#, however, I can't find this function.
That function is not part of the .NET framework.
It is either part of the code you already have in VB, or part of the assemblies that are part of the application.
You can use something like Red Gate's .NET Reflector to open .NET executables/DLLs and view the internal code as IL, VB or C#, providing the object has not been deliberately obfuscated when it was compiled.
This is also a neat method of converting VB to C#

Categories

Resources