Windows 95 Known Problems: -------------------------- 1) Visual Builder There is a known problem when using the Visual Builder on Windows 95. With the Composition Editor, when using controls requiring a bitmap or an icon, the Visual Builder allows the loading of bitmaps or icons from a resource DLL. A warning alarm (beep) when the Visual Part is opened may indicate that a resource DLL could not be loaded. 2) Open Class & Visual Builder generated code to run on Windows 95 and WIN32S. As mentioned in (1), the Visual Builder may not display the icons or bitmaps specified in a resource DLL. The same is true for generated code from the Visual Builder or when using Open Class. Loading icons or bitmaps using a temporary IDynamicLinkLibrary object may cause in the image to not be shown. For example coding: IPointerHandler someHandle(IDynamicLinkLibrary("MYRESDLL").loadIcon(someResId)); will fail to load the icon from resource DLL 'MYRESDLL' with id 'someResId', unless the DLL is loaded for the life of the icon object. The workaround for this problem, is keep the resource DLL (IDynamicLinkLibrary object) loaded for the life of the image object. The following methods may be used. (A) For non-Visual Builder applications, declaring an IDynamicLinkLibrary variable outside of any function or class will keep the DLL loaded and thus eliminate the problem. For example, file foo.cpp #include .... ... IDynamicLinkLibrary resDLL("MYRESDLL"); class foo { ... }; int Foo::bar() { ... // The line below will succeed since we declared a global resDLL object IPointerHandler iconPtr = IDynamicLinkLibrary("MYRESDLL").loadIcon(1); ... } ... (B) For Visual Builder applications, the generated code is typcally: IDynamicLinkLibrary("MYRESDLL").loadIcon(someResId); For Icon Controls, Bitmap Controls, Graphic PushButtons, etc. In addition, the user enters code such as: #IDynamicLinkLibrary("MYRESDLL").loadIcon(someResId) When using the Composition Editor notebooks to load bitmaps or icons in Containers and other controls, the DLL must remain loaded for the life of the objects using these icons or bitmaps. One way to accomplish this is use the user HPV and CPV files for the main part to declare the global IDynamicLinkLibrary object needed for the resources. For example, MainPart.CPV ... MainPart::MainPart(unsigned long id, IWindow* parent, IWindow* owner, const IRectangle& rect, const MainPart::Style& style) ... { ... } IDynamicLinkLibrary resDLL("MYRESDLL"); ... Now any Visual Builder generated code that uses temporary IDynamicLinkLibrary objects to load resources from MYRESDLL will work as expected.