I bumped into this post while trying to set it up few days ago. I eventually discovered the solution so here it is…
You have to set WinX command line parameter to the first pixel of your second monitor, which is in most cases the horizontal resolution of your first monitor. If your first monitor has the width of 1920px, you have to set WinX=1920 (the screen pixels are zero based).
If your displays are setup (in Windows display settings) so that the second monitor is on the left, you setup WinX to a negative value of the second monitor horizontal resolution. For example if the second monitor has the width of 1280px, you set WinX=-1280.
If the second display is placed above the first in Windows display setting, then you use a negative value for WinY parameter. Besides that, you can also use ResX, ResY and FULLSCREEN parameters.
This should all work with more than two monitors, and you can imagine it like this… all of your monitors make one big screen where the coordinate (0, 0) is the pixel in the top left corner of your primary monitor. The pixels of other monitors depend on how you postion them in the Windows display settings.
IMPORTANT NOTE: This won’t work if you have HTC Vive pluged in and running the game in VR, becuse then the application always gets displayed on the first monitor, regardless of how you setup WinX and WinY. If by any case (which is rare) you have to run two instances of the app on the same PC, one for VR and one for the second monitor, the solution is to make two app builds, one with Steam VR plugin enabled and one with the plugin disabled - in which case you might get some blueprint or compilation errors if you use Steam VR specific functions (using just motion controllers and their generic functions shouldn’t produce errors when Steam VR plugin is disabled). I haven’t tried t with other VR headsets, but I supose the behaviour is the same.
Hope it helps.