VDF-GUIdance logo

  Visual DataFlex Logo

Shared knowledge leads to accumulated knowledge

        Printer Friendly Page

Prevent Status Panels losing the focus

by Geoff Furlong


The status panel used in BPOs and Winprint will lose its focus when switching to other applications and back. The result is that the application appears to have locked up while it is in fact still running the report or business code. This describes a fix for the problem.
No Files Available
Date Created: 03/10/1999
Date Updated: 20/10/1999
Author: Geoff Furlong
Company: MSG Business Systems Ltd.

Prevent Status Panels losing the focus

Ever wondered how to make VDF panels "stay on top"?
Try the following code in your panel/dialog/etc Activating procedures
// To make the status_panel stay-on-top, we first find it's window handle ...
Move (FindWindow("DFDialogClass", Caption_Text(Self))) To hWnd#

// ... then we add the extended style WS_EX_TOPMOST to the window, but we use SetWindowPos
// to make sure the change takes effect immediately.

Move (SetWindowPos(hWnd#, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE ior SWP_NOSIZE)) To swp#

I've used this to make the BPO status panel stay where it should and not disappear if the VDF app loses the focus.

With a little change to the above the status panel will also support special characters. This way it will also work in programs that are written for non-english languages.

replace the line
   Move (FindWindow("DFDialogClass", Caption_Text(Self))) To hWnd#

   Move (FindWindow("DFDialogClass",ToAnsi(Caption_Text(Self)))) to hWnd#