Page 1 of 1

multi monitor support for the copy progress dialog

Posted: 07.10.2007, 06:24
by ian
This isn't that important (compared to the other features I was talking about here viewtopic.php?t=39) but if you are running two monitors, and have FC on monitor 2, it still opens up the copy progress on monitor 1.

A great feature would be to open it up wherever it was last, or a least on the same monitor that the program is on.


Posted: 07.10.2007, 16:26
by Marek
Hi Ian
Thanks. And I'm happy to give a hand if it is required (I'm ok at C++ )
maybe you know how to display windows standard dialog on desired monitor?
I have the same problem with properties display too.

Posted: 08.10.2007, 06:03
by ian
My first thought was that there would be a couple of ways to do it -

1) use your own copy routine, with your own dialog box (I tend to use WriteFileEx for everything now days, and also ignore most of the standard dialogs...)

But I assume you are using SHFileOperation, so then I thought

2) Separately make the dialog box (and put it in the right place on the screen) and then pass the pointer to SHFileOperation (first parameter).


3) use it as you are doing now now, but once it is started search for the control and then shift (you'd need a bit of multi threading).

So I thought I'd do a quick code fragment for you showing (2) or (3), but when I did the 'base' case ie -

ZeroMemory(&SHOp, sizeof(SHFILEOPSTRUCT));
SHOp.hwnd = NULL;
SHOp.wFunc = FO_COPY;
SHOp.pFrom = "t:\\temp\\test\\*.*\0\0";;
SHOp.pTo = "w:\\temp\0\0";;

it worked already! ie when I do that, the progress box etc DOES come up on whatever monitor I have the program on, NOT on monitor 1 like FC!

Hmm, can you give me a code fragment of what you are doing (and what compiler you are using?) You can send it to me via a message if you don't want it public.

edit:I'll go and look at the file properties one..

Posted: 08.10.2007, 17:35
by Marek

I have sent my question without testing the problem. Now just I have tested the copy progress with 2 monitors and it works very well (2007.05a and current beta).
Only properties dialog appears always on the first monitor.

Posted: 08.10.2007, 23:11
by ian
Doesn't on mine - I'm using 2007.05a on Win 2000 Pro Patch 4 build 2195, and if FC is on the second monitor the 'confirm replace' comes up on the second monitor, but the copy progress always comes up on monitor 1.

And it isn't because that's where I last put it either, no matter where I might have shifted it the previous time, it always opens up in the same place on monitor 1...

Where the example code above always opens it up on the same monitor that the main program is on.. (could be my compiler doing something..)


Posted: 12.10.2007, 04:06
by ian
To get the properties box to display on the monitor the program is on, you need to set the hwnd value in SHELLEXECUTEINFO to the main form handle ie

ZeroMemory (&execInf, sizeof (execInf));
execInf.cbSize = sizeof (execInf);
execInf.hwnd = this->Handle ;
execInf.lpVerb = "properties";
execInf.nShow = SW_SHOW;
execInf.lpFile = "T:\\temp\\rc3.pdf";
ShellExecuteEx (&execInf);

will show it on the right monitor.

Posted: 12.10.2007, 08:24
by sjbildermann
Just a minor point - using two monitors.

If you move freeCommander to monitor two and you have the splitter bar adjusted to some set positiom like 50% freeCommander moves the splitter bar to some other position like 75%. Does this every time.

I wish it would simply stay at the set % when moved to monitor 2.

Maybe a simple fix. Can this be done.

Posted: 12.10.2007, 10:00
by ian
sjbildermann wrote:...I wish it would simply stay at the set % when moved to monitor 2.
Not doing that on mine... (ie it is working and keeping the right percentage)