重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
''' summary多屏显示屏幕设置/summary
创新互联公司-专业网站定制、快速模板网站建设、高性价比九江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式九江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖九江地区。费用合理售后完善,十载实体公司更值得信赖。
''' param name="obj"目标窗体/param
''' param name="scrIndex"由0开始的屏幕索引,0为主屏幕/param
Private Sub ShowScreens(obj As Form, scrIndex As Integer)
Dim arr As Screen() = Screen.AllScreens
If scrIndex arr.Length Then
obj.Left += arr(scrIndex).Bounds.X
Else
Dim mess As String = "当前屏幕索引超出范围,是否要显示在最后一个屏幕?"
Dim result As DialogResult = _
MessageBox.Show(mess, "信息提示", _
MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
If result = Windows.Forms.DialogResult.Yes Then _
obj.Left += arr(arr.Length - 1).Bounds.X
End Sub
多屏幕的显示,屏幕的宽度相当等于N屏幕的宽度之和,更改窗体的X坐标就能控制窗体显示在哪个屏幕上。
我做了几行。
对无标题栏的窗体,或者不从标题栏移动的情况下可用。
有标题栏并且点住标题栏移动则不理想。
代码如下,仅供参考。
1、建立模块。
option
explicit
public
oldproc
as
long
public
declare
function
setwindowlong
lib
"user32"
alias
"setwindowlonga"
(byval
hwnd
as
long,
byval
nindex
as
long,
byval
dwnewlong
as
long)
as
long
public
declare
function
sendmessage
lib
"user32"
alias
"sendmessagea"
(byval
hwnd
as
long,
byval
wmsg
as
long,
byval
wparam
as
long,
byref
lparam
as
any)
as
long
public
declare
function
callwindowproc
lib
"user32"
alias
"callwindowproca"
(byval
lpprevwndfunc
as
long,
byval
hwnd
as
long,
byval
msg
as
any,
byval
wparam
as
any,
byval
lparam
as
any)
as
long
public
const
wm_move
=
h3
public
const
wm_lbuttondown
=
h201
public
const
wm_lbuttonup
=
h202
public
const
gwl_wndproc
=
(-4)
public
bnhwnd
as
long
public
function
newproc(byval
hwnd
as
long,
byval
msg
as
long,
byval
wp
as
long,
byval
lp
as
long)
as
long
if
msg
=
wm_move
then
'捕获窗体移动事件
sendmessage
bnhwnd,
wm_lbuttondown,
1,
sendmessage
bnhwnd,
wm_lbuttonup,
1,
'将消息发送到按纽,使其发生click事件
end
if
newproc
=
callwindowproc(oldproc,
hwnd,
msg,
wp,
lp)
end
function
2、在窗体上有一个按钮(名称为eventbn)
dim
原垂直
as
single,
原水平
as
single
private
sub
eventbn_click()
msgbox
"移动了"
end
sub
private
sub
form_load()
form2.show
form3.show
bnhwnd
=
eventbn.hwnd
'获得按纽句丙
oldproc
=
setwindowlong(me.hwnd,
gwl_wndproc,
addressof
newproc)
eventbn.visible
=
false
end
sub
private
sub
form_mousedown(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
if
button
=
1
then
原垂直
=
me.top
+
y
原水平
=
me.left
+
x
end
if
end
sub
private
sub
form_mouseup(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
me.top
=
me.top
-
原垂直
+
y
me.left
=
me.left
-
原水平
+
x
form2.top
=
form2.top
-
原垂直
+
y
form2.left
=
form2.left
-
原水平
+
x
form3.top
=
form3.top
-
原垂直
+
y
form3.left
=
form3.left
-
原水平
+
x
end
sub
3、其他窗体基本都这样。
两个显示器显示有两种模式,一种是
双屏
复制,另一种是扩展。
你这个只能用第二种方式。你需要把要在另一个显示器上显示的窗体的Location设置在主显示器全屏时的右边就可以了.其实就是桌面的向右延伸。
在主显示上拖一下窗体就明白了!
在项目中右键点击添加窗体。在代码中需要显示该窗体的地方写入如下代码:“form2.show()”form2是你窗体的name属性……