Wow - this looks like a pretty sophisticated way to use a simple tool like LivePrompter! TBH, it wasn't really built with "dual-use" scenarios in mind.
Especially managing screen positions for TWO instances is a bit of a challenge: LivePrompter simply saves window size and position for the list window and the song window in the Windows registry on exit. It was never built for multiple list windows or song windows; so the values saved on exiting the LAST instance of LP will be written to registry and recalled on start-up.
- Thanx for the suggestion in your 1st question - I'll build a range check into LP. Will have to do some research on how wxWidgets treats multiple screens with different resolutions; I believe, the dimension range is just a big envelope rectangle, so possibly there is a scenario where a window may fit into that enveloping rectangle but will still be invisible. But outside such scenarios, I will probably come up with a healthy range check and move the windows to a "healthy" position if they fall outside the visible screen.
- But there's a downside to this - once you move back to your 3 or 4 monitor setup from a single monitor scenario, your window position will be on the first screen, since that's where it was last saved. But at least you won't have to find your window somewhere off-screen...
A broader solution that also addresses your multi-instance-issues could be to introduce a new variable in LivePrompter.ini: "ScreenLayout". Simply a numeric parameter (default: 1) that tells LP to store and recall window coordinates in a different "slot" in the registry. With this, you could also deal with varying monitor configurations for the SAME instance of LP: simply use a different .ini file for each configuration.
I'll have to look at this - shouldn't be too complicated to implement! Will keep you posted in this thread once I have something ready to test.
Will have to do some work on the full screen issue - funny enough, the window coordinates stored for windowed mode do affect which screen the full screen version will pop up on. So, currently, you'll need to start LivePrompter in windowed mode, move the song window to whatever screen you want the maximised version to display later, close it and then start it in full screen mode. But that's a bit non-intuitive and convoluted, so I'll change things for full screen: the full screen will always be displayed on the same window that shows the list window. Or I could (if wxWidgets allows this) allow an .ini setting that specifies which screen the song window should be maximized to.
BTW: there shouldn't be a need to copy the LP prog folder to run two differently configured instances of LP on one system. Simply create different .ini files for each configuration and launch LP with the name of the .ini file as a parameter (set the shortcut target to "....\LivePrompter.exe MyConfig.ini"). Now start one instance with myConfig.ini and the other with bandConfig.ini - done!
That's also how you would start your primary instance with different screen layouts for different monitor configurations - use an identical .ini file with just the ScreenLayout parameter set differently (once that parameter exists...).