I found a solution for the problem described below that might interest
other programmers encountering the same problem.
We have a VB 6 program running that for some users frequently reports:
Failed to load control 'ImageList' from Mscomctl.ocx. Your version of
Mscomctl.ocx may be outdated. Make sure you are using the version of
the control that was provided with your application.
Platform is Windows 2000 SP2. mscomctl.ocx is exactly the same version
on the development machine as on all machines we investigated, namely
220.127.116.11 dated December 7, 1998. I suspect that this version is
delivered with Seagate's Crystal Reports 8.0.. Anyway, it is not
mentioned on the site:
After thorough research, we found out that this ocx leaks GDI objects
each time a Listview instance is destroyed. To see this for yourself,
open the Windows Task Manager, choose tab Processes and then choose
View - Select columns... from the menu. Check GDI-objects and choose
OK. You now have a new column in the processes list that shows the
number of GDI-objects in use by the process. In our case, this number
increases steadily and when it reaches the number of (about) 10.000.
Then, the error mentioned above occurs, repeatedly. Closing the
program will release the GDI-objects and the user can work again, for
A better version of mscomctl.ocx is 18.104.22.168, dated May 11, 2000.
This version is distributed with VB 6 SP 5. As you see, the version
number is lower, although the date is more recent. You might encounter
problems deploying this newer lower version. A newer version 22.214.171.124
exists, but this is shipped with Office XP SP2, so I am neither sure
whether you are free to use it if you don't have office XP, nor have I
tested this version.
I hope this may be helpful to others encountering this problem.