Ever since we took over the PowerOffice tools in December of 2008 there has been a bug in the PowerToolbar that I had just about given up on ever finding. It was to a point that I have been considering pulling the product off the market if I couldn't find and fix this bug, because this was becoming more and more of an issue.

The problem would only manifest on Vista, Windows Server 2008 and Windows 7 machines. The code that themes the menus is different for XP and older operating systems and there is no problem. What happens in Vista and newer operating systems is that some menus were not themed at all and this would offset the settings so that icons would be out of sequence, some items wouldn't be themed correctly, menu items would disappear, text was missing etc.

Last week I decided to take this week and dig into this and either find it and fix it or basically give up on it and throw in the towel. This was the fourth time I dedicated a week or so of work to try to find this. I couldn't get going on this for real until Wednesday and spent Wednesday and Thursday tracking things. Yesterday, Friday, I had isolated the problem to what appeared to be the WM_DRAWITEM message not firing for some of the menu items and by last night I was completely confused. It made no sense that messages that fire when a menu item is drawn were not firing. No sense at all! So I decided to do the sensible thing and sleep on it!

When I got up this morning I had formed a bit of a battle plan and decided to start from the other end of things. Write code to track down the handles of the menus and then duplicate the steps that PowerToolbar takes in order to gather information about the menus and see if something went missing. My thought was that perhaps there was something in the menus that caused them not to be traversed by the API calls made to gather information about the menus, items and sub-menus.

I wrote a simple class that looped through the controls on the appframe window and put the menus and menu items into a queue. I then used GetMenuItemCount() to get the number of items in each menu as well as the handle (PROP:Handle) for each menu. I used OutputDebugString, my favorite method of debugging, to output the information into DebugView and then checked out each menu and the information. I started noticing a trend! Every menu that was not themed correctly had a negative value for the handle. I was on to something, but what?

After a lot of experimenting it was obvious that something was preventing the code from detecting the menus with negative handles and thus not theming them, setting everything off. I checked a couple of methods that gather information about the menus and menu items and also set the menu to be owner drawn. It didn't take long for one particular API to stand out: GetSubMenu(). It retrieves the handle of sub-menu from a menu handle and thus makes it possible to "walk" the menu structure using API calls.

But it wasn't the actual call to GetSubMenu() that was interesting, rather the check that came after it:

hSubMenu = PTB:GetSubMenu(hMenu, Pos-1)
If hSubMenu > 0 Then SELF.GetMenuInfo(hSubMenu, Feq).

Looks good to me! But when I carefully read the information about GetMenuInfo on MSDN I realized that the function returns 0 ONLY if it fails or if the handle is not returned. The handle can be negative and now everything came together in my head and I realized this was why it couldn't handle the negative handles - it would only recurse if the menu handle was a positive number greater than zero!.

The bottom line was that I had to add the "<" character in two places and the problem was solved. I changed the code above to:

hSubMenu = PTB:GetSubMenu(hMenu, Pos-1)
If hSubMenu <> 0 Then SELF.GetMenuInfo(hSubMenu, Feq).

in two places and the problem disappeared! This is already out for beta testing and I hope to release this early next week! I feel very good about finally finding this and figuring out the fix.

It's been quite a while since I sat down and wrote in the blog! Since early December I have been absolutely buried in work for a client, but I'm finally getting to the end of it. Should finish up with it this week and be able to re-group and see what's next on the agenda.

I wrote software for this client which they have been using for the past 5-6 years and they are now starting to lease it out to other companies in the same field. So we had to do some polishing on the program, make sure everything was compatible with Vista and Windows 7. Installers were improved and all binaries code signed. We also upgraded the application from SQL Anywhere 9.0.2 to 11.0.1.

This software was originally written by Sue between 1996 and 2000 using TPS files and ClaCom for transmitting data from remote users. When I started working on the SQL version of this software back in 2002 we decided to use Crystal Reports, but we found out later that it was next to impossible to deploy it, but it wasn't a big deal since they just bought the Standard Edition of Crystal Reports for the computers so it was not a big deal. Now it seems that it is impossible to get the Standard Edition so I set out to try to come up with a better solution and see if I could figure out how to deploy this. After some snooping around I found out that Crystal Reports Xi came with deploy-able merge modules and after some more research I found out that I could use Visual Studio 2010 to create an MSI installer with the merge modules. Testing showed that it worked perfectly so we deployed this new MSI installer. It adds about 40MB to the install, but everyone using this is on high speed internet connection so downloading 65MB install is not a problem.

We converted the new company to use the software two weeks ago and everything went smoothly except they had to use some old hardware for the database server as their new server had been delayed - once delivered last week it turned out to be defective so this is taking some extra time. There have been some minor issues that have come up, nothing major, but we have had to make some modifications to the program and the database after we deployed because this company operates a bit differently than my client's company. Dealing with outdated hardware has prompted us to decide that when we do this again we will buy a computer to set this up on and get it completely set up before we deliver it so that everything is working perfectly when we hand it over. This doesn't deal with a lot of data (accumulated total number of all records in all tables for both companies is < 100,000) As I mentioned, the software uses SQL Anywhere 11.0.1 and we use the Sybase Replication (dbremote) to transmit data from remote computers to a consolidated database via FTP server. The remote users are brokers that work remotely, transmitting trade orders to the back office where they are processed. We have been using Sybase replication since 2005 without a single problem, it just works, so this has worked perfectly for our application. I need to finish off a report and do an update for the new company and then I should be mostly done with this client for now, apart from regular maintenance:) I have several outstanding issues that I need to deal with in the tools from PowerOffice as well as new updates for Utilities and Build Automator. I will be starting to work on those again next week and hopefully I can get back on schedule with my products by the beginning of February. I appreciate the patience whle I have been going through an extremely busy period for the past 4-6 weeks! Arnor Baldvinsson

Sue and I send you all our best wishes for Merry Christmas and Happy
Holidays this season:) May we all enjoy a prosperous New Year in 2011:)

Once I have posted this I am going to be out of the office until Tuesday, December 28. I will probably check my email couple of times over the long weekend, but don't expect speedy support;)

Thank you all for your business and support in 2010:)

Arnor Baldvinsson - Susan Pichotta
Icetips Alta LLC

I use Skype quite a bit for all kinds of contact with clients and programmers and it has become part of my life. I just found out that it has been down all day, at least for me and millions of other users. Click here to read more about this problem on the Skype blog.

Here are couple of other links that have some more information:

http://blogs.wsj.com/digits/2010/12/22/skype-down-for-millions-of-users/

http://blog.tmcnet.com/blog/tom-keating/skype/skype-down.asp

Hopefully they will get it back up again soon:)

Arnor Baldvinsson

I have uploaded the latest builds of all our products. Taskpanel was already Clarion 7.3 compatible from an install earlier this month and was not updated now. All the other products now have a Clarion 7.3 compatible installer. I did not release any other changes to the products, except the Previewer, so if you have the latest build and don't need the 7.3 compatibility, you do not have to download this build.

The only change in the Previewer this time was a minor fix for the "Condition for use" option in the Legacy template chain which was not working correctly. It is now:)

For more information and download links to each of the new version, please visit our forum.

With these builds the total number of builds released this year for our subscribers climbs to 51! I'm hoping to get one more documentation update for the Icetips utilities out before the end of the year. In 2009 we released 24 new builds, 11 in 2008 and 21 in 2007. That is 107 builds since we started with our subscriptions in late July 2007.

As we are getting close to Christmas and we are getting busy with holiday stuff, Sue and I want to wish you all Merry Christmas and a very prosperous New Year:)

Arnor Baldvinsson and Susan Pichotta
Icetips Alta LLC

We have made version 2.0.143 of Icetips Taskpanel available for download at http://www.icetips.com/downloadfile.php?FileID=155.

You need to have a valid Gold subscription and be logged into your Icetips account to be able to download the new install. To purchase a Gold Subscription please go to http://www.icetips.com/subscribe-gold.php and to renew, please go to http://www.icetips.com/renewsubscriptions.php

You can access the documentation online in html format and you receive the chm and PDF files with the install.

To read more about the Taskpanel update, please view my post on our forum Note that this install is the first of Clarion 7.3 compatible installs. We have tested all our installs and products under Clarion 7.3, as I blogged about earlier. We have just received a second Clarion 7.3 pre-release build which should fix the threading issue that we found when testing our Previewer demo! I will test it later today and expect to push out all the new builds for Clarion 7.3 tomorrow if no problems are found:)

This version of the Taskpanel changes a bit the way ampersands in headers and items are now shown. There was a problem with this in the older versions and since the ampersands made no sense as hot-keys, I have changed this so that ampersands are always shown exactly like they are entered into the headers and items. I.e. "Name & Address" will show up exactly like that. "Name && Address" will show up as "Name && Address". If this change causes issues, please let me know as soon as possible!

Arnor Baldvinsson

Last week I have tested all our products with the new Clarion 7.3 build. Everything is working nicely, except I stumbled on a thread dead-lock bug in the Clarion run-time library. Softvelocity reported to me Friday morning that this problem has been isolated and fixed for next build! It does not affect any of our products, but the Report Previewer demo demonstrated this dead-lock very well and it was 100% reproducible. I was also able to reproduce it with the People.app demo application Thursday and submitted that to Softvelocity and they have tested it with their new build with no problems at all! So I am confident that our 7.3 builds will have no problems at all:)

Since none of our products add any Clarion libraries, the DLL/LIB name changes in 7.3 do not affect any of our products.

I have updates for the PowerToolbar and Previewer ready to go, but decided to wait releasing them when Softvelocity announced that 7.3 pre-release was around the corner. I will release those updates in the next day or two as the public 7.3 release is probably some time away and I don't want to wait for it.

I'm planning to release a new build of the Utilities before the end of the month with documentation updates. Other products will be released as new features will be ready for release or when 7.3 is released to the public, then the new 7.3 compatible installs of all products will be made available!

Arnor Baldvinsson

Hi all,

We have made version 1.1.2392 of Icetips Utilities available for download at http://www.icetips.com/downloadfile.php?FileID=154

You need to have a valid Gold subscription and be logged into your Icetips account to be able to download the new install. To purchase a Gold Subscription please go to http://www.icetips.com/subscribe-gold.php and to renew, please go to http://www.icetips.com/renewsubscriptions.php

This build is mostly documentation update, which is now up to even 400 pages in the PDF! You can access the documentation < href ="http://www.icetips.com/manuals/utilities/index.html" target="_blank">online in html format and you receive the chm and pdf files with the install.

To read more about the Utilities update, please view my post on our forum This build is the 40th build that we release this year!

I have new builds of the Previewer and Taskpanel that will be going out either this week or next. I had some issues reported last week that I felt like taking care of before I released new updates. That has been taken care of now:)

Clarion 7.3 is expected to be released this week to third party developers for testing. New install builds will be required to support Clarion 7.3 and that will put the number of builds issues by Icetips to over 50 in 2010! For a Gold Subscription renewal price, that gives you a new build for about $3.00!

Arnor Baldvinsson