Problem Overview
In SIMATIC WinCC V7 Runtime projects, alarm pages that are configured as pop-up windows (Picture Windows) frequently suffer from a documented display defect: when the operator double-clicks the title bar of the pop-up to maximize it, the Close (X) button is rendered outside the visible monitor area. On single-monitor systems this typically means the button sits a few pixels past the right edge; on multi-monitor or 4K/UHD HMI consoles the offset can be several hundred pixels, making the alarm view effectively unclosable without a keyboard intervention (e.g. Alt+F4) or a process restart of WinCC Explorer.
This issue has been reproduced across WinCC V7.0 SP1, V7.0 SP2, and several intermediate Hotfix (HF) levels up to HF6 on Windows 7 Embedded, Windows Server 2008 R2, and Windows Server 2012 R2 stations. The symptom is independent of the underlying PLC connection (S7-300/400, S7-1200, S7-1500, or ET 200SP), and appears to be a defect in the WinCC Picture Window / Window Manager component, not a graphics-driver problem.
Affected Versions and Environment
Use the table below to triage whether your installation is in the affected population before applying any of the workarounds described later in this article.
| WinCC Version | Hotfix Tested | Status | Recommended Action |
|---|---|---|---|
| V7.0 SP1 | Up to HF6 | Bug confirmed | Apply V7.0 SP2 + latest HF, or use script workaround |
| V7.0 SP2 | Up to HF14 | Bug confirmed in early HFs | Upgrade to V7.4 SP1 or apply latest cumulative HF |
| V7.2 | Up to HF3 | Defect still reproducible | Apply script sizing + check HF level with Siemens Support |
| V7.3 | Baseline / HF2 | Marginal improvement only | Upgrade to V7.4 SP1 or later |
| V7.4 SP1 | Baseline | Defect resolved in 7.4 SP1 | No action required |
| V7.4 SP1 Update 1+ | All HFs | Defect resolved | Maintain current SP |
| V7.5 / V7.5 SP1 | Baseline | Defect resolved | Plan migration if customer is on V7.0 |
Reference: WinCC Communication to S7-1500, S7-1200 and ET 200SP (PDF) confirms that V7.4 SP1 was a structural service-pack boundary that also corrected several Picture-Window / Window-Manager rendering defects. SIMATIC HMI WinCC V7.5 SP1 - WinCC/Connectivity Pack documents the current (post-fix) runtime architecture and can be used to verify that your target SP contains the corrected WindowManager.dll.
Root Cause Analysis
The Close button is owned by the OS-level non-client area of the Picture Window, not by the WinCC Picture itself. When WinCC processes the OnMaximize event of a Picture Window, it issues a SetWindowPos call to the Win32 API with coordinates computed from the configured picture geometry plus the title-bar and border dimensions. In the affected builds the computation:
- Reads the configured picture size from the project (e.g. 1920 x 1080 in the Graphics Designer).
- Adds the non-client metrics (caption height, frame width, resize border) obtained from
GetSystemMetrics(SM_CXSIZEFRAME)andSM_CYCAPTION. - Calls
SetWindowPos(hWnd, HWND_TOP, x, y, cx, cy, SWP_SHOWWINDOW)with the sum of the two.
On systems where the Win32 non-client metrics are reported in pixel coordinates but the WinCC graphics coordinate system is operating in Dialog Template Units (DLU), the resulting window can be slightly larger than the monitor's working area. The non-client right edge (and therefore the X button) is clipped. The defect is independent of the alarm content; it is a function of the Window Manager, the project resolution, and the monitor's reported SM_CXMAXTRACK value.
Additional contributing factors observed in field reports:
- Multiple monitors of mixed DPI (e.g. 1920 x 1080 @ 100 % next to 2560 x 1440 @ 125 %).
- Active Remote Desktop (RDP) session where the effective screen is the RDP client canvas, not the physical panel.
- Picture Window property "Adapt Picture" set to "Fit window / picture to picture" with the monitor rotation set to 90°.
- Hotfix level that did not include the PictureWindow scaling correction (typically fixed in HF7+ for V7.0 SP2).
Diagnostic Procedure
Run the following checklist on the operator station to confirm the diagnosis before opening a Siemens Support Request:
- Open WinCC Explorer → Computer → Properties → Graphics Runtime. Note the configured runtime monitor, start picture, and the Window Mode flag. Window Mode = Maximized is the configuration that triggers the bug.
- Launch the project in Runtime. Trigger the alarm pop-up. Reproduce the off-screen X button.
- Open the WinCC diagnostic file
<Project>\<Computer>\WinCC_Sys_01.logand search for entries containingPictureWindow,WM_SIZE, orSetWindowPos. The presence of aSM_CXMAXTRACKmismatch entry confirms the rendering defect. - Verify the installed WinCC version and Hotfix level:
HKLM\SOFTWARE\Siemens\Automation\WinCC\<version>\HotfixLevel. Compare with the table in the previous section. - Check the operating system:
winverfrom the command line. Confirm whether the OS reports the monitor as 1 (single) or 2 (extended). The bug is most reproducible on extended-desktop configurations. - Temporarily set the HMI station to a 1024 x 768 resolution. If the X button is no longer off-screen, the issue is the resolution/Window-Manager interaction described above.
Solution 1 — Upgrade to a Corrected Service Pack
The cleanest, fully-supported fix is to upgrade the WinCC installation to a release that includes the corrected WindowManager. Based on the Siemens support matrix, the first generally available release that resolves the off-screen X button is WinCC V7.4 SP1 (or higher). The WinCC Communication to S7-1500, S7-1200 and ET 200SP document lists V7.4 SP1 as a major functional baseline for modern S7-1500/ET 200SP communication, which is a strong argument for upgrading if you have any of those controllers on the same project.
Upgrade workflow:
- Back up the complete WinCC project directory and the SQL archive database.
- Export the Project Migrator report. Resolve all mandatory and warning entries before installing the new SP.
- Install the new WinCC SP on a test station. Migrate the project. Verify alarm acknowledgement, pop-up positioning, and the Close button.
- Perform a parallel runtime test of at least 72 hours before promoting to the production HMI.
Solution 2 — Apply the Latest Cumulative Hotfix
If a full SP migration is not in the project plan (for example, the customer is locked on V7.0 SP2 by audit), install the latest cumulative Hotfix. Open a Siemens Industry Online Support ticket with the project number and request the most recent WinCC V7.0 SP2 Hotfix package. As a general rule:
| Base Version | Minimum Recommended HF | Notes |
|---|---|---|
| V7.0 SP1 | HF7 or later | First HF containing the WindowManager fix |
| V7.0 SP2 | HF14 or later | Includes cumulative PictureWindow / DLU correction |
| V7.2 | HF3 or later | Includes defect remediation for the X-button offset |
Always perform a controlled restart of the WinCC Runtime and the WinCC Explorer service after applying an HF. The Hotfix installer must be run as Administrator, and the WinCC project must be closed before the installer starts.
Solution 3 — Script-Based Window Sizing Workaround
For installations that cannot be upgraded immediately, the most reliable workaround is to force the Picture Window to a specific size that is known to fit inside the monitor, regardless of the maximize request. The script approach has the advantage of surviving SP changes and does not require modifying the graphics of every alarm picture.
Create a global C script in the WinCC Graphics Designer that triggers on the alarm pop-up's Open and Maximize events. The function clamps the window geometry to the configured monitor working area.
C-Action (Global Script)
// WinCC V7 Global C Action - Clamp Picture Window to Monitor Working Area
// Trigger: Picture Window "OnOpen" / "OnMaximize"
// Tag: none required
#include "apdefap.h"
void ClampWindowToScreen(HMUNIQUEID hWnd, int margin)
{
long screenW = 0;
long screenH = 0;
long winW = 0;
long winH = 0;
long winX = 0;
long winY = 0;
// 1. Query the primary monitor working area (excludes taskbar)
screenW = (long)GetSystemMetrics(SM_CXMAXTRACK);
screenH = (long)GetSystemMetrics(SM_CYMAXTRACK);
// 2. Query the current Picture Window geometry
// WinCC Picture Window APIs:
// SSMGetWindowPos / SSMGetWindowSize return pixels at the
// configured runtime DPI.
SSMGetWindowPos(hWnd, &winX, &winY);
SSMGetWindowSize(hWnd, &winW, &winH);
// 3. Clamp the window so that the right and bottom borders
// (and therefore the X button) stay inside the monitor
if ((winX + winW) > (screenW - margin))
{
winW = screenW - winX - margin;
}
if ((winY + winH) > (screenH - margin))
{
winH = screenH - winY - margin;
}
// 4. Re-issue the geometry using SetWindowPos
SSMSetWindowSize(hWnd, winW, winH);
SSMSetWindowPos(hWnd, winX, winY);
// 5. Force a redraw
InvalidateRect((HWND)hWnd, NULL, TRUE);
}
VB-Script Alternative (per Picture)
' WinCC V7 Picture-level VB Script
' Trigger: Event "OnMaximize" of the alarm pop-up Picture Window
' Called from the picture's "Properties > Events > Maximize"
Dim shell, mon, w, h, m
Set shell = CreateObject("WScript.Shell")
' Read configured picture size from project (substitute your values)
w = 1920
h = 1080
m = 8 ' 8-pixel safety margin for the X button
' Use the WinCC ScreenItem object to query the active monitor
Dim scr
Set scr = HMIRuntime.Screens("AlarmPopUp")
' Clamp the window to the monitor working area returned by the OS
Dim maxW, maxH
maxW = scr.Parent.ScreenWidth - m
maxH = scr.Parent.ScreenHeight - m
If w > maxW Then w = maxW
If h > maxH Then h = maxH
' Re-apply the size
scr.Parent.Move 0, 0, w, h
SSMGet*/SSMSet* family of WinCC API calls which are part of PDLRTApi.h. To make the function available to every picture, register it as a Project Function (Graphics Designer → Tools → Project Functions) and call it from each alarm picture's Open event.
Solution 4 — Project-Side Geometry Adjustment
If scripting is not permitted (for example, in a validated GMP-regulated installation), the same effect can be achieved by adjusting the alarm picture geometry in the Graphics Designer so that, after WinCC adds the non-client metrics, the resulting window is still inside the monitor:
- Open the alarm picture in the Graphics Designer.
- Select the picture root → Object Properties → Geometry → Picture Width / Picture Height.
- Subtract the OS-reported non-client metrics. For Windows 7 / Server 2008 R2 at 100 % DPI, a safe deduction is: Width -= 16 px, Height -= 38 px. For 125 % DPI scale by 1.25: Width -= 20 px, Height -= 48 px. For 150 % DPI scale by 1.5: Width -= 24 px, Height -= 58 px.
- Set the picture property "Window Mode" from "Maximized" to "Standard" on the alarm picture object. The window will no longer attempt to cover the full screen; the operator can still resize it manually.
This approach has the side effect of leaving a small border on the right and bottom of the picture at full-screen, but it guarantees the X button is always reachable.
Solution 5 — Runtime / Start Picture Configuration
For customers who do not actually need a full-screen alarm view, the simplest operational fix is to disable the maximize behavior at the picture level:
- Graphics Designer → open the alarm picture.
- Right-click the picture root → Object Properties → Properties → Display → "Window Mode" = "Standard".
- Uncheck "Can be maximized" and "Size can be changed" in the same dialog.
- Recompile the project and reload Runtime.
The Configuring display in Runtime - WinCC reference describes the equivalent settings in TIA Portal (for Comfort Panels and RT Advanced/Professional). Although the API is different, the underlying concept — controlling Full-screen mode versus Window mode at the picture level — applies to the classic WinCC V7 project as well.
Verification Procedure
After applying any of the solutions, perform the following acceptance test on the operator station before sign-off:
- Start WinCC Runtime. Trigger the alarm pop-up from the alarm list or from a button.
- Double-click the title bar to maximize the pop-up.
- Confirm with a screen-capture tool (or the operator) that the X button is fully inside the monitor and clickable.
- Close the pop-up with the X button. Repeat 10 times. Confirm deterministic behavior.
- Change the monitor resolution between 1024 x 768, 1920 x 1080, and the panel's native resolution. Repeat steps 2–4 at each resolution.
- Change the Windows DPI between 100 %, 125 %, and 150 % (sign out / sign in required). Repeat steps 2–4 at each DPI.
- Trigger a second alarm pop-up while the first is still open. Confirm that the stacked pop-up's X button is also reachable.
For validated installations, attach the screenshots and a copy of the test log to the project FAT/SAT documentation.
Best Practices for Alarm Pop-up Design
Use these engineering rules to prevent the defect (and similar Picture-Window defects) from reappearing on future projects:
- Always use Standard Window Mode for alarm pop-ups, and provide a dedicated full-screen alarm line in the main process picture. The full-screen view is sufficient for 95 % of operator actions; the pop-up is for acknowledgement and detail.
- Cap the pop-up size at 80 % of the screen width and 80 % of the screen height. Operators will not lose context and the X button will always be visible regardless of the installed WinCC version.
- Configure the runtime start monitor in WinCC Explorer → Computer → Properties → Graphics Runtime. Avoid starting the project on a secondary monitor with different DPI.
- Document the WinCC version and HF level in the project header. When the customer opens a Support Request, the support engineer needs both numbers to determine whether the bug is reproducible on the installed SP.
- Use the WinCC Project Migrator before every SP upgrade. The migrator's Compatibility tab lists Picture-Window properties that have changed semantics between SPs.
- Subscribe to the Siemens ProductCERT notification feed for WinCC V7 / V7.5 cumulative security and stability advisories.
Troubleshooting Matrix
| Symptom | Likely Cause | First Action | Second Action |
|---|---|---|---|
| X button off-screen at 1920 x 1080, 100 % DPI | WinCC V7.0 SP1 / V7.0 SP2 baseline bug | Apply latest HF | Upgrade to V7.4 SP1+ |
| X button off-screen only at 125 / 150 % DPI | DPI scaling + non-client metrics mismatch | Set OS DPI to 100 % for the HMI user | Apply Solution 3 (C script clamp) |
| X button off-screen only on secondary monitor | Multi-monitor geometry mismatch | Set runtime start monitor to primary | Disable secondary monitor in HMI BIOS |
| X button off-screen after RDP logon | RDP canvas smaller than physical monitor | Use full-screen RDP (Ctrl+Alt+Break) | Connect a local console session for the operator |
| X button off-screen only on first maximize, fine afterwards | Initial geometry cache from Graphics Designer | Reload the project | Add InvalidateRect in Solution 3 |
| X button off-screen on TIA RT Professional / WinCC Unified | Different rendering path (Qt-based) | Open a Siemens Support Request with the project number | Check Configuring display in Runtime |
When to Open a Siemens Support Request
If the X button is still off-screen after applying the latest available HF for your installed SP and the C-Action workaround, open a Support Request with Siemens Industry Online Support. Include the following data to shorten the resolution time:
- Project number and WinCC installation number (from WinCC Explorer → Help → About).
- Installed SP and Hotfix level (
HKLM\SOFTWARE\Siemens\Automation\WinCC\<version>\HotfixLevel). - Operating system version, edition, and build number (
winver). - Monitor make, model, native resolution, and DPI scaling.
- Graphics-driver version.
- Screenshot of the off-screen X button with the OS task manager visible (proves that the picture is rendered but clipped).
- A copy of
WinCC_Sys_01.logcovering the moment the pop-up was maximized.
Reference the WinCC Communication to S7-1500, S7-1200 and ET 200SP and WinCC V7.5 SP1 - WinCC/Connectivity Pack manuals in the request to give the support engineer the correct baseline.
FAQ
Which WinCC V7 versions are affected by the off-screen Close button bug?
WinCC V7.0 SP1 (through HF6), V7.0 SP2 (early HFs), and V7.2 / V7.3 baselines are all reported with the defect. WinCC V7.4 SP1 and later (including V7.5 and V7.5 SP1) contain the corrected WindowManager and are not affected.
Do I have to upgrade to WinCC V7.4 SP1 to fix the issue?
No. The bug is also resolved by the latest cumulative Hotfix for V7.0 SP2 (HF14 or later) or V7.2 (HF3 or later). The script-based window-clamp workaround (Solution 3) is a third option that works on any V7 build without changing the SP level.
Why does the Close button only go off-screen on 1920 x 1080 and not on 1024 x 768?
The Picture Window geometry is computed from the configured picture size plus the OS non-client metrics. At 1024 x 768 the resulting window is still smaller than the monitor's working area, so the X button stays visible. At 1920 x 1080 the picture size plus the non-client metrics exceeds the monitor width, and the X button is clipped.
Will the script workaround affect the S7-1500 / S7-1200 communication?
No. The script runs in the WinCC Graphics Designer runtime and only modifies the Picture Window's position and size via the Win32 API. The S7 channel (configured per the WinCC Communication to S7-1500, S7-1200 and ET 200SP manual) is completely independent of the window geometry.
Does the same defect exist in TIA Portal WinCC RT Professional or WinCC Unified?
The exact same symptom has not been reported in the Qt-based runtimes (RT Professional and WinCC Unified), but related Picture-Window / full-screen display issues have been logged. The Configuring display in Runtime reference explains how to control full-screen and window mode at the picture level in TIA Portal.