GUI ScreenIO for Windows

Problems with Multiple Working-set Applications

It's not particularly difficult to implement a multiple working-set application, but it's particularly important that your flow-control logic is correct.

My debugger seems to interfere with the working-set logic

This occurs because the debugger appears to be another window in your application; the multiple working-set logic may be fooled into generating a panel-EVENT-INACTIVATED when your debugger receives the focus.  It's usually possible to debug your application, it just behaves somewhat differently than it would if the debugger were not being used.

The panel the user clicked isn't becoming active

You didn't correctly process the panel-EVENT-INACTIVATED event and redisplay the panel that is to be activated.

The active panel isn't returning events to me

Again, you didn't correctly process panel-EVENT-INACTIVATED and redisplay the panel that is to be activated.  The panel will appear to be active, but because your program didn't call GUI ScreenIO to redisplay it, events not returned correctly.

The main is active, but the inactive popups are still on top of it

The main window "owns" all of the windows in your application.  This means, among other things, that when the user minimizes the main window, all of the other windows in the application are also automatically minimized.  When the main is restored, all of the popups are restored as well. 

Windows always displays owned windows on top of their owner window.  Therefore, when you activate a base panel (or main), the popups in other working-sets will remain on top of the main window. 

This is standard Windows behavior.

Suppressing the main window

Because the main does not come to the top when it is activated, some developers prefer not to display the main window and instead, use popups and property sheets throughout their application, even though this is not normal for a Windows application. 

You must display a main window (to, among other things, establish an owner for the rest of your application's windows), but you can suppress the display of that main window.

Open the panel editor and edit your main panel.  Select Panel/Properties, click the Main Container tab, check the box to "Defer display of the Main until a base panel is displayed".  Now, the main will be invisible until you display a base panel.  When you display the first base panel, it will appear and behave normally. 

Minimizing applications with a suppressed main window

There are some things to consider when you suppress the display of your Main container; among others, when a user clicks the Minimize button on a popup, only that popup is minimized, not your entire application.  Furthermore, the popup isn't minimized to the taskbar, it's minimized to the bottom of the desktop.  Likewise, clicking the X box in a popup only results in a panel-EVENT-CLOSE-WINDOW, which is not generally treated the same as a panel-EVENT-CLOSE-AND-STOP.

If you want to minimize your application, you must do it manually by displaying the main with a panel-DO-MINIMIZE display option.  Because you wouldn't generally close an application when your user clicks the X box on one of your popups, you will have to provide a button or menu option to allow your user to terminate your application.

2000-2019 Norcom, all rights reserved 


Send feedback to Norcom