vb 获取鼠标在窗口内的屏幕坐标
哪位大大帮我写个函数,3Q了问题1:PublicFunctionGetCursorScreenWindowPos(ByValHwnd)AsPOINTAPIDimrAsRE...
哪位大大帮我写个函数,3Q了
问题1:
Public Function GetCursorScreenWindowPos(ByVal Hwnd) As POINTAPI
Dim r As RECT, p As POINTAPI
GetWindowRect Hwnd, r
GetCursorPos p
GetCursorScreenWindowPos.X = p.X - r.Left
GetCursorScreenWindowPos.Y = p.Y - r.Top
'...我不知道这里要怎么写,才不会有超出的问题
End Function
问题2:
上面是获取屏幕坐标,我想在写一个捕捉鼠标进入窗口或某个控件的事件
进入的话就返回ture,否则false,封装成函数更好.最好解释一下用法
问题2补充,是任意窗口.不仅仅是获取自身窗口那么简单,别看错了...
好的话我再追加50.大大们快来啊... 展开
问题1:
Public Function GetCursorScreenWindowPos(ByVal Hwnd) As POINTAPI
Dim r As RECT, p As POINTAPI
GetWindowRect Hwnd, r
GetCursorPos p
GetCursorScreenWindowPos.X = p.X - r.Left
GetCursorScreenWindowPos.Y = p.Y - r.Top
'...我不知道这里要怎么写,才不会有超出的问题
End Function
问题2:
上面是获取屏幕坐标,我想在写一个捕捉鼠标进入窗口或某个控件的事件
进入的话就返回ture,否则false,封装成函数更好.最好解释一下用法
问题2补充,是任意窗口.不仅仅是获取自身窗口那么简单,别看错了...
好的话我再追加50.大大们快来啊... 展开
4个回答
2012-07-14
展开全部
看到你的问题补充就不知道你想要写成什么样子的了。
给你两段代码把。
一、获取鼠标在屏幕上的坐标
'坐标显示在Text1,Text2.
'建一个Timer1,Text1,Text2.
'代码如下。
'============
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim p As POINTAPI
Private Sub Form_Load()
Timer1.Interval = 10
End Sub
Private Sub Timer1_Timer()
GetCursorPos p
Text1.Text = p.x
Text2.Text = p.y
End Sub
二、获取鼠标在窗体内的坐标
'坐标显示在标题上
'运行此程序需要再窗体添加控件Timer
Option Explicit
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Form_Load()
Timer1.Interval = 10 '设置获取鼠标坐标间隔
End Sub
Private Sub Timer1_Timer()
Dim P As POINTAPI
GetCursorPos P '获取鼠标在屏幕中的位置
ScreenToClient Me.hwnd, P '转换为本窗体的坐标
Dim t As Boolean
t = P.x >= 0 And P.y >= 0 And P.x < Me.Width / Screen.TwipsPerPixelX And P.y <= Me.Height / Screen.TwipsPerPixelY
If t Then Me.Caption = "x=" & P.x & "y=" & P.y '按像素显示坐标
'If t Then Me.Caption = "x=" & P.x * Screen.TwipsPerPixelX & "y=" & P.y * Screen.TwipsPerPixelY '按缇显示坐标
End Sub
给你两段代码把。
一、获取鼠标在屏幕上的坐标
'坐标显示在Text1,Text2.
'建一个Timer1,Text1,Text2.
'代码如下。
'============
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim p As POINTAPI
Private Sub Form_Load()
Timer1.Interval = 10
End Sub
Private Sub Timer1_Timer()
GetCursorPos p
Text1.Text = p.x
Text2.Text = p.y
End Sub
二、获取鼠标在窗体内的坐标
'坐标显示在标题上
'运行此程序需要再窗体添加控件Timer
Option Explicit
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Form_Load()
Timer1.Interval = 10 '设置获取鼠标坐标间隔
End Sub
Private Sub Timer1_Timer()
Dim P As POINTAPI
GetCursorPos P '获取鼠标在屏幕中的位置
ScreenToClient Me.hwnd, P '转换为本窗体的坐标
Dim t As Boolean
t = P.x >= 0 And P.y >= 0 And P.x < Me.Width / Screen.TwipsPerPixelX And P.y <= Me.Height / Screen.TwipsPerPixelY
If t Then Me.Caption = "x=" & P.x & "y=" & P.y '按像素显示坐标
'If t Then Me.Caption = "x=" & P.x * Screen.TwipsPerPixelX & "y=" & P.y * Screen.TwipsPerPixelY '按缇显示坐标
End Sub
更多追问追答
追问
我的问题2是想写个函数,函数功能是当鼠标进入我指定的窗体句柄后.返回真假值.如果进入返回真,不在窗口内的话返回假.
追答
'添加Command1
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "你的鼠标在按钮上了"
End Sub
展开全部
'运行此程序需要再窗体添加控件timer
option
explicit
private
declare
function
getcursorpos
lib
"user32"
(lppoint
as
pointapi)
as
long
private
declare
function
screentoclient
lib
"user32"
(byval
hwnd
as
long,
lppoint
as
pointapi)
as
long
private
type
pointapi
x
as
long
y
as
long
end
type
private
sub
form_load()
timer1.interval
=
10
'设置获取鼠标坐标间隔
end
sub
private
sub
timer1_timer()
dim
p
as
pointapi
getcursorpos
p
'获取鼠标在屏幕中的位置
screentoclient
me.hwnd,
p
'转换为本窗体的坐标
dim
t
as
boolean
t
=
p.x
>=
0
and
p.y
>=
0
and
p.x
<
me.width
/
screen.twipsperpixelx
and
p.y
<=
me.height
/
screen.twipsperpixely
if
t
then
me.caption
=
"x="
&
p.x
&
"y="
&
p.y
'按像素显示坐标
'if
t
then
me.caption
=
"x="
&
p.x
*
screen.twipsperpixelx
&
"y="
&
p.y
*
screen.twipsperpixely
'按缇显示坐标
end
sub
option
explicit
private
declare
function
getcursorpos
lib
"user32"
(lppoint
as
pointapi)
as
long
private
declare
function
screentoclient
lib
"user32"
(byval
hwnd
as
long,
lppoint
as
pointapi)
as
long
private
type
pointapi
x
as
long
y
as
long
end
type
private
sub
form_load()
timer1.interval
=
10
'设置获取鼠标坐标间隔
end
sub
private
sub
timer1_timer()
dim
p
as
pointapi
getcursorpos
p
'获取鼠标在屏幕中的位置
screentoclient
me.hwnd,
p
'转换为本窗体的坐标
dim
t
as
boolean
t
=
p.x
>=
0
and
p.y
>=
0
and
p.x
<
me.width
/
screen.twipsperpixelx
and
p.y
<=
me.height
/
screen.twipsperpixely
if
t
then
me.caption
=
"x="
&
p.x
&
"y="
&
p.y
'按像素显示坐标
'if
t
then
me.caption
=
"x="
&
p.x
*
screen.twipsperpixelx
&
"y="
&
p.y
*
screen.twipsperpixely
'按缇显示坐标
end
sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
讲一下很久以前的设计思路
1、首先取得全屏的大小。
2、不可能获取任意窗口,因为不同的系统和软件的限制。
3、找出看得见的窗口的句柄,求出窗口大小。
4、综上所述建立一个限制算法。
5、其它的由你了。
1、首先取得全屏的大小。
2、不可能获取任意窗口,因为不同的系统和软件的限制。
3、找出看得见的窗口的句柄,求出窗口大小。
4、综上所述建立一个限制算法。
5、其它的由你了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不太清楚哦,希望有人帮解答,祝:早日找到答案!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询