Apple II Technical Notes _____________________________________________________________________________ Developer Technical Support Apple IIgs #98: Aren't Windows a Pane? Written by: Dave Lyons January 1991 This Technical Note describes things in the Window Manager that we have to tell you even though we shouldn't. _____________________________________________________________________________ A Warning About Window Color Table Handles And Resources All versions of the Window Manager that support window color tables specified as handles or resources, up to and including System Software 5.0.4, work unreliably when a standard window's color table is supplied by handle or resource ID. The problem is not immediately obvious; only one bit of memory is accidentally cleared, but the address is unpredictable in advance. (When unlocking the color table handle, the standard window definition procedure attempts to unlock the handle manually by turning off bit 15 of word offset +4 in the master pointer record. But it gets the high and low words of the handle reversed and usually turns off bit 15 of the word at offset $80E4 or $80E5 in some bank of RAM determined by the low byte of the handle.) The solution is to avoid supplying color table handles or resource IDs to the Window Manager. Supply color table pointers instead. You can get a color table pointer from a color table resource ID by calling LoadResource on the color table resource, locking the handle and dereferencing it. Memory is less fragmented if color table resources used in this way are marked as attrFixed. One method is to put the window color table pointer into the window template before calling NewWindow2. If you are creating the window from an rWindParam1 resource, you need to use LoadResource to get the template into RAM so that you can stuff the color table pointer into the template. (Be sure to change the moreFlags field to indicate that the color table is a pointer, if the template indicates it's a resource.) After you create the window with NewWindow2 (by handle), use ReleaseResource to release the rWindParam1 resource. Another method is to create the window as invisible and pass the window color table pointer to SetFrameColor before calling ShowWindow. Further Reference _____________________________________________________________________________ o Apple IIgs Toolbox Reference, Volumes 2-3