Jump to content

Custom Titlebar: Inconsistent FP Maximize behavior with multiple monitors of different resolutions


Recommended Posts

Hello Lavag's,

Currently developing an UI with custom titlebar like JKI Package Manager 2020, applications from MS Office etc. I have a laptop (1440 X 900) running windows 7 and a second monitor with resolution 1920 X 1080. Scale and layout options for both monitors are set to 100%. 

"FP.State = Maximized" seems to work only when the resolutions for all monitors are equal or selecting the monitor with highest resolution as main screen.

1. Laptop(1440 X 900) as main screen: FP.State = Maximized works fine in Laptop but not in second monitor. The Panel Bounds and Window Bounds are way out of the screen resolution.

       image.png.b343fd04ef226cda3790e1acbcb4f3fa.png     image.png.57b75dace2dc4d47d361dd5b9bd3767e.png

Same as in case of JKI VI Package Manager (2020)

 

2. Setting Window bounds and panel bounds manually:

Some pixels appear in the another monitor when setting the Window Bounds and Panel Bounds manually. This sems to be also the case with NI-Package Manager

Is there a way to make it work?  Any help is greatly appreciated.

 

Regards,

Nikhil.

 

Custom Titlebar.vi

Link to comment

When a window (any window, including LabVIEW) is maximized on monitor1 (1920x1080), the window rectangle is (-8,-8,1928,1048) on my laptop (Win7 Pro).  That extra 8 pixels on each side is the frame edge.  I noticed this when I started to use Win7.

 

Link to comment

If memory serves right, this is because LabVIEW does not take Windows themes into account. Essentially, the window drawn by LabVIEW gets surrounded by a border that is provided by Windows. You should see different results if you change your theme to one that has smaller or no borders.

Also, Window Bounds does not include the window border. It is implicitly mentioned in the context help: "The four elements in the cluster are the top, left, bottom, and right values of the front panel window, which includes the interior region, scroll bars, title bar, menu bar, and toolbar."

Your best bet is to use Window Bounds and subtract the border size manually. Unfortunately, it will break again if the user changes themes.

 

Link to comment

I'm seeing the same issue as @nikp, where the window bounds for a maximized window on the second display are way off. It looks to be related to whether the title bar is visible or not.

There are two displays in a side-by-side configuration, the primary is 1920x1080 and the secondary is 2560x1440. Running under Windows 10 with display scaling off.

side-by-side.png.c74c5e327e97d2c1fcfbfdf8b23d4b91.png

I tried the examples posted in the thread @LogMAN linked to with very different results. @hooovahh's version worked for both displays, while @Aristos Queue's version only had correct results on the primary display. After trying to work out why they were so different, I noticed the title bar visibility was different between the two examples. The snippet below demonstrates the different results.

title-bounds.png.87d5bb4475c5a148b1dbbc083e16620f.png

When the front panel is on the primary display, the bounds only differ by one pixel when title bar visibility is toggled. When the front panel is on the secondary display, difference between the Right and Bottom values is huge.

title-bounds-primary.PNG.476ca5cb6192e69f6456bf8f7c920193.PNG      title-bounds-secondary.PNG.20b9f975ef0463387953b6742d755fee.PNG

Calling GetWindowRect() and GetClientRect() from user32.dll on the front panel window has the same results when toggling the title bar visible, so it looks to be a Windows level issue rather than LabVIEW.

In any case toggling the title bar visible works well enough. Not sure if it will help your application @nikp.

 

Link to comment

Hmm, it seems the difference in resolution of primary vs secondary displays is being added to the maximized window on the secondary. In this case it's a difference of 640x320 ( or 2560-1920 x 1440-1080). If those numbers are then subtracted from the window bounds when the title bar isn't visible, they're within 1px. Looks to work for your resolutions and results too @nikp. Might be a better solution than toggling the title bar.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.