-
Feb 9th, 2018, 04:49 PM
#1
Thread Starter
Lively Member
[RESOLVED] Centering Form on Given Monitor
Hi,
Does anyone have any thoughts as to how I could go about centering a form on a monitor which may not necessarily be the Primary Monitor?
For example, suppose I have frmMain open on my secondary monitor. If I open another form from frmMain I want to be able to center it on the monitor that frmMain is on.
Further, if I move the form in question to another monitor and a call is made to re-center it I want to center it on the monitor it's currently on.
Thanks in advance for any assistance!
Best Regards
Brad
-
Feb 9th, 2018, 04:56 PM
#2
Re: Centering Form on Given Monitor
Codebank.
I haven't looked at those codebank routines in a while. If they don't do what you want, let me know, and I've got lots of multi-monitor procedures.
Good Luck,
Elroy
Any software I post in these forums written by me is provided "AS IS" without warranty of any kind, expressed or implied, and permission is hereby granted, free of charge and without restriction, to any person obtaining a copy. To all, peace and happiness.
-
Feb 13th, 2018, 05:52 PM
#3
Thread Starter
Lively Member
Re: Centering Form on Given Monitor
Hi Elroy,
Thanks for the link and the contribution to the community, greatly appreciated! A couple questions:
1) With the CenterWindowOnMonitor sub I'm required to supply the monitor number. Some of our end users may have one monitor, some have four, others have two. I'd like to be able to figure out what monitor the form in question is on and use that as the monitor number. How would I go about getting that value in that context?
2) I hesitate to ask, but...any chance you've used these functions in a RemoteApp context before??
Thanks!
Best Regards
Brad
-
Feb 13th, 2018, 07:07 PM
#4
Re: Centering Form on Given Monitor
Hi Brad,
Certainly no problem asking anything you like. I may not have the answer though. And, to answer #2 first, no, I've never used them in any kind of remote way other than some of the desktop-share utilities where you make a presentation and others watch. My primary program has been used that way, but I believe everything was just put on the primary ("Make this my main display") monitor. So, I'm not sure what you're getting at.
Now, regarding monitor numbers and handles (your question #1), they have both. The numbers are just ordinal numbers starting with ONE. The handles can be any Long. The API calls really prefer the handles (and not the ordinal numbers). I'm not sure what your exact question is, but you've got a MonitorCount function, as well as the following:
MonitorHandle - converts a number to a handle.
MonitorNum - converts a handle to a number.
PrimaryMonitorNum - the number of the primary monitor.
PrimaryMonitorHandle - the handle of the primary monitor.
...and there's also...
WindowIsOnMonitor - which tells you whether or not a window is on a particular monitor. It'd be easy to build a loop to determine the precise monitor (using the handle) that any window was on.
It would seem that some combination of those would allow you to work out the answer to your question #1. However, if not, please explain in more detail and maybe I can assist with finding an acceptable answer.
Best Regards,
Elroy
EDIT1: Here's a bit of test code for a Form1 (assuming you have my monitor module in a BAS module in the same project):
Code:
Option Explicit
Private Sub Form_Click()
Dim i As Long
'
For i = 1 To MonitorCount
If WindowIsOnMonitor(MonitorHandle(i), Me.hWnd) Then
MsgBox "I'm on monitor #" & Format$(i) & " with handle " & Format$(MonitorHandle(i))
Exit For
End If
Next i
End Sub
I'm currently on a three-monitor system, and it seemed to work flawlessly. I could have centered it easily if I wanted.
Last edited by Elroy; Feb 13th, 2018 at 07:12 PM.
Any software I post in these forums written by me is provided "AS IS" without warranty of any kind, expressed or implied, and permission is hereby granted, free of charge and without restriction, to any person obtaining a copy. To all, peace and happiness.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|