Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

The Windows CE / Pocket PC developers buglist (long)

0 views
Skip to first unread message

Niels

unread,
Nov 4, 2001, 4:02:46 AM11/4/01
to
The Windows CE / Pocket PC developers buglist (long)

We have just finished developing a fairly big commercial application for the
healthcare industry running on Microsoft HPC 2000 and Microsoft Pocket PC.
The development was done with Embedded Visual Basic (EVB) and Embedded
Visual C (EVC), i.e. EVT 3.0.
Although we have got the job done we had to spend a lot of time finding
workarounds for annoying bugs and shortcomings of the Windows CE development
tools. I would like to share some of my negative experiences with you to
hint you of pitfalls. There are plenty of these, I just wrote down the ones
I could remember in the moment. You are invited to add your own comments /
bug findings to this thread.

----------------------------------------------------------------------------
----------------------
Embedded Visual Basic (EVB)

- debugger breakpoints do not work properly

This is already a well known problem in the newsgroups : The Debugger does
not stop at the specified breakpoint but a few (sometimes many) lines after
the set breakpoint. Has to do with the line continue character (_) used to
break a long line of code into more lines. Makes the debugger useless for
bigger projects. You end up putting MsgBox or Beep statements everywhere
instead of using the debugger, like the first computer users did when
debuggers were not invented yet.
VERY ANNOYING. Probably the most annoying bug in EVB.
Workaround : Do not use the line continuation char to get unreadable code or
set ten breakpoints in the area where you want to debug and feel like an
idiot.

- memory leak in CreateObject (see Microsoft KB Article Q286504)

Another UNBELIEVEABLE.
Using ADOCE to create recorsets and then close the recordset again to free
up the memory ? forget it. The standard EVB runtimes on your Pocket PC/HPC
have this ugly bug built in that does not release the memory again ater Set
obj = nothing. Makes using ADOCE quite impossible without a workaround.
There is supposed to be a MS fix but it is not freely available (WHY NOT, M$
?). The best workaround is to use the free OSIutil contol from Odyssey
software
(http://www.odysseysoftware.com/downloads/OSIUtil100.exe). Check out
http://www.odysseysoftware.com/support.html for documentation. Thanks to
Odyssey for saving our project. I still wonder why I had wait for a third
party to save our project. Where was Microsoft ?
Do not try to workaround this problem by leaving the recordsets open - there
is another bug that ADOCE does not commit changes of records back to the
database - all changes are lost if you soft-reset the device before closing
your application.

- Forms cannot be unloaded

not a bug, just a VERY annoying shortcoming. Forms cannot be unloaded in
EVB, just shown or hidden. No Unload method. That means if your application
uses 10 forms they are all loaded and occupy memory. And they occupy a lot
of memory. We had a form with about 100 textboxes to simulate a list, this
form ate 600K memory after loading. A lot for a device with 16MB program
memory. As a workaround many people end up writing EVB applications with
just one form and a lot of tabstrip tabs or frames. You can imagine how the
code looks like crammed into one form, makes you want to throw up... This
workaround saves you from writing your own window manager but of course does
not solve the memory problem.

- SIP leaves hole in form (Pocket PC)

after using the SIP (soft keyboard) then hiding a form and then re-showing
it the place where the SIP was sometimes becomes a hole where the underlying
form is visible.

----------------------------------------------------------------------------
----------------------

ADOCE

ADOCE (the Windows CE database system) was one of the few areas where we did
not have too many problems, it is easy to use, works quite reliably and with
acceptable performance since version 3.1. Do yourself a favour and upgrade
to ADOCE 3.1 if you developed an application using ADOCE. Performance is
much better for complicated queries.
We found only some smaller problems with ADOCE, I do not remember in which
version, some were :

- sort problem, when sorting for two fields and one field is empty the
second field does not sort

If you have a table books with the fields author and title, then you do a
"SELECT * FROM books ORDER BY author, title ASC", the titles are unsorted if
the author field is empty (''), i.e

author title

[empty] I like bugs
[empty] Windows CE bugs
[empty] The big buglist
Bill Gates I like bugs
Bill Gates The big buglist
Bill Gates Windows CE bugs

- ADOCE does not commit changes before closing the recordset
see above

- ADOCE Seek and Find methods do not work
Not a bug, but an annoying shortcoming. The Seek and find works with SQL
server CE but not with the local CDB databases on the device. (this is
documented somewhere by Microsoft). No way to find a specific record in a
big recordset.
Workaround : Create a new recordset or use the high/low method to find a
record in a big sorted recordset (slow)

----------------------------------------------------------------------------
----------------------

ActiveX controls :

The most scary part of Windows CE development. The Microsoft EVB controls
are a collection of small and big bugs, things that do not work as
documented, missing features, memory leaks, etc. Some examples :

- CommandBar control (HPC 2000)


- CommandBar.Controls.Clear crashes the program

Do not use the CommandBar.Controls.Clear method to clear the contents of the
command bar. This sometimes (seems to have no pattern) just ends your
application. Seems to crash the aplication more often if the app is big
(>500K). If the Clear method works it is one big memory leak. You loose a
few K every time you use it. OK, so instead you use the Item.Remove method
to remove all items one by one if the Clear method does not work ? Wrong :

- Item.Remove leaks memory

The Remove method leaks memory like hell, too. Just do not remove anything
from a CommandBar object.
Strange enough the MenuBar object Clear method on the Pocket PC works fine
and the remove methods do not leak memory there !?

Workaround : Waste your time writing a complicated function to hide / show
the necessary menu items

----------------------------------------------------------------------------
----------------------

MSComm :

- slow

We tried to use the MSComm control for modem communication. Apart from the
already documented bugs sending of data was too slow to be usable. The
delays actually occured when sending the data, not in the EVB program. We
eventually gave up and wrote a C DLL function to do the modem comms.

----------------------------------------------------------------------------
----------------------

- Grid :

- all sorts of small problems, i.e. no double click event

- key events do not fire in the form
If you set the KeyPreview property of a form to true the form receives the
keyboard events before the control does. Works most of the time, but not for
the Grid control.

----------------------------------------------------------------------------
----------------------
- ComboBox (Pocket PC 2000, 2002 and HPC 2000)


- Change event does not fire when selecting an item from the list

this is not really a bug, it is a 'feature' as the doc states :
'The Change event occurs only if you set the Style property to 0 (drop-down
combo box) and the user changes the text, or if you change the Text property
setting through code'. Nevertheless it makes the change event quite useless.
There is no way to find out through events if the user chose an entry from
the combo list. Workaround : save the original value of the combo in a
variable when showing the form and compare the actual value to this when
saving the contents of the form.

- User can change the contents of a locked combo box :

This is my favourite, it is such an obvious bug that one wonders how it
could slip through the Microsoft quality control. Or it makes you wonder if
there is any quality control. The doc says :

'For the ComboBox control, when Locked is set to TRUE, a user cannot change
any data.'.
This is a lie.

Try the following :
create a new EVB project and put a combo box on the form (combo1). Then add
the following code

Private Sub form_load()
Combo1.AddItem ("quality control")
Combo1.AddItem ("gone fishing")
Combo1.Locked = True
End Sub

When you start this mini program (in the emulator or on the device) you see
the combo box with the default text 'combo1'. Now click on the arrow down
and you see the two lines text. Click on the second line 'gone fishing' to
highlight the text and release the mouse/stylus. Now click on the
highlighted 'gone fishing' again and drag (move) the mouse/stylus left or
right outside the drop down list. The list closes and the combo text changed
to 'gone fishing'. Uh.

Forget the Combobox Locked property for your projects.
This bug is a dangerous security risk for commercial applications if the
programmer did not use a workaround. Imagine the 'open valve' combo box that
is locked after the tank is pressurizred in your industrial plant supervisor
application.... boom !

Workaround : Use the Enabled property or save the value of the combo to a
varaiable before locking and compare the actual value on saving the form
contents.

- the gotfocus event fires multiple times when opening a combo list (once
for every content)

just plain annoying
----------------------------------------------------------------------------
----------------------

- Form object

- Property ShowInTaskbar does not work on HPC2000

- Property Moveable does not work on the HPC2000
Workaround : Put some nasty code in the paint event of the form that resets
the form position to 0,0

----------------------------------------------------------------------------
----------------------

All this is really sad, you say, but surely Microsoft will fix these
annoying bugs as soon as possible, right ? Wrong. I just downloaded the
newly released Pocket PC 2002 SDK beta. You won't believe it, all the
controls and the EVB runtime are still the same buggy 2 year old files ! So
developers will have a lot of fun with the PPC 2002 as well, good luck...

Instead of just shouting DEVELOPERS, DEVELOPERS, DEVELOPERS at the Embedded
Developers Conference ( http://www.ntk.net/media/developers.mpg ) Mr.
Ballmer should maybe take care that his company actually DOES something for
Embedded DEVELOPERS.

We don't want to wait for .NET (which will be buggy as well in the first
release) :
My question is : WHERE IS THE EVT SERVICE PACK, WHERE IS THE EVT SERVICE
PACK, WHERE IS THE EVT SERVICE PACK ????


Niels Schwarz
System Integration Analyst

Tom

unread,
Nov 4, 2001, 6:52:23 PM11/4/01
to
Very nice Mr Schwarz, very nice.

I guess Microsoft is only interested in taking over the
Pocket and Handheld PC market and couldn't give a d*mn
about developers.

>.
>

Carlos

unread,
Nov 29, 2001, 4:10:48 PM11/29/01
to
In behalf of my team, thank you for your comments. Let's
hope Sun comes up with a JVM that supports JFC Swing
classes for the Pocket PC so we can all turn our backs on
Microsoft's flawed development tools.

>.
>

Kenneth Evans, Jr.

unread,
Dec 1, 2001, 10:08:29 PM12/1/01
to
I have a bug list that is even longer than this one. It is a waste of
time to post it. They don't listen. I have reported bugs, and they are
still there in the next releases (as you mentioned). Some of the bugs are
real brain-dead mistakes. Some are in documentation that absolutely lies,
to say nothing of documentation that is unclear or incomplete. There is no
way to get feedback to the eVc team. They are interested in providing paid
support ($195 per incident), but not much in free help, even with things
that are clearly bugs. (In all fairness I have got *some* free help, albeit
with a lot of effort on my part in the getting of it. The support engineer
has to do this on his own time, so you need a nice person.)

I have been told some of the engineers read the newsgroups, but I have
yet to get a usable answer to *anything* I've posted here. And there is, of
course, the question of whether those people that have the power to change
things read these forums or ever get the information.

I am extremely frustrated.

The bad thing is that the bugs and faulty documentation lead to bad
code, which reflects poorly on the Pocket PC as a platform. (To say nothing
of *my* reputation.)

-Ken


Jim

unread,
Dec 4, 2001, 11:57:40 PM12/4/01
to
While it may not affect immediate fixes from Microsoft, it might help
a lot of us who inevitably stay up all night trying to figure out
something which we think should work, but never does!! If you have
other items to add, I'd love to hear about some of them.

Thanks,
J

"Kenneth Evans, Jr." <ev...@aps.anl.gov> wrote in message news:<ui9rw6teBHA.1720@tkmsftngp04>...

Lucas Goodwin

unread,
Dec 6, 2001, 12:17:34 PM12/6/01
to
Yes, please, post 'em!

Time lost to this stuff is rediculous. I spent 6 hours searching through
the SDK source files just to find out that _ASSERT, _ASSERTE, and DebugBreak
are all the same damn thing and thus I got to write my own Assert window...
:(

This sounds like a case of Program Managers not being in touch with their
target audience.

-Lucas Goodwin

"Jim" <jim...@aol.com> wrote in message
news:e4fac989.01120...@posting.google.com...


-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
Check out our new Unlimited Server. No Download or Time Limits!
-----== Over 80,000 Newsgroups - 19 Different Servers! ==-----

0 new messages