Applies To:
  • CitectSCADA
  • VijeoCitect

When using multi-monitors and calling CSV_MM_WinPopup() to open a popup window and then calling CSV_MM_PageDisplay() from the popup window to change pages on the main window, the popup window remains open. Also, calling CSV_MM_WinFree() (or WinFree()) does not close the popup window either. The only way the popup can be closed is by clicking the 'X' in the titlebar.

A preferable way to achieve the functionality required here is to use CSV_MM_WinNewAt() to open the popup, rather than CSV_MM_WinPopup. Provided the correct mode is used, the popup will close automatically once PageDisplay() is called from a button on the popup (to change the page on the main window). A suggestion is to use the following modes in CSV_MM_WinNewAt() to open the popup:
1 - This is important. It opens the popup in 'page child' mode so it will therefore close when new page displayed on parent. ie when PageDisplay() is called from the popup.
16 - Thin borders and no title.
64 - Always on top. This mode is not strictly necessary as 'always on top' is enabled anyway in CSV_MM_WinNewAt().
256 - Ensures no part of popup window appears off screen.
Note that the modes for CSV_MM_WinNewAt() are largely the same as those for the standard WinNewAt() and all are detailed in the Help. One of the additional modes for the CSV_MM version of the function which is potentially of interest is 8192, which centres the popup on the screen.
The popup itself then only requires its button(s) to call the PageDisplay() function.

That is, as long as mode 1 has been used to open it, the popup window will close upon this Up Command being executed. In the example here, the 'Menu' page will be shown in the window from which the CSV_MM_WinNewAt() function was called and the popup will be closed.