Quick Summary:
My customer has a status bar implemented in LabVIEW that they are displaying by executing a TestStand sequence in a new thread. During their main execution, they then need to display prompts to the operator using Message Popup steps. We cannot figure out how to keep both the LabVIEW dialog and message popup steps in front of the Operator Interface.
The behavior I want is to display the LabVIEW dialog from a new thread, and for that dialog to always be on top of all windows. Then to display a message popup from the original thread and allow the user to dismiss that dialog, all while still keeping the LabVIEW dialog visible. And of course, this has to be done using the LabVIEW Run-Time Engine because it is a production station.
Details:
Here’s why I need that behavior:
My customer is locking down the OS on their production station. The operator cannot use ALT-TAB to change windows. Therefore both windows must be accessible by clicking.
My customer has a program that starts on OS startup and takes up the whole screen, thereby denying access to the desktop. They also have the Operator Interface set to full screen. Any window that ‘goes to the back’ goes behind the OI and is unrecoverable by clicking.
The operator prompt requires the operator to click the ‘OK button‘ to close. Thus it must be able to have focus.
I have tried all combinations of the following, none of which give the behavior I want. The resulting behavior I describe is after the LabVIEW dialog and the Message popup have both been displayed.
- LabVIEW dialog settings
- Top-Level Application Window
- Float (Do Not hide when LabVIEW inactive)
- Modal
- Float and set FP.IsFrontmost
- Modal and use TestStand API Start/End Modal Dialog VIs
- Float and use TestStand API Start/End Modal Dialog VIs
- Message Popup Settings
I’m attaching the sequence file, LabVIEW, and CVI code that I was testing with. You can test the panel's behavior by clicking running from the Sequence Editor, and then clicking on the sequence editor once both windows are open. If the LabVIEW dialog is set to floating or normal, clicking on the Sequence Editor puts the dialog behind the sequence editor. If the dialog is set to modal, if focus is given to the dialog while the message popup is active, the message popup cannot be dismissed until after the dialog is closed (the OK button is unresponsive).
As a reference, I found that I can get the behavior I want if I code the dialog in CVI, set the panel to ‘Float Always’ and use ‘Float’ for the Message popup.
Does anyone have anything else I can try? Is there another LabVIEW setting I’m missing?