鼠标在窗口上移动时,会产生mousemove消息,在这个消息里可以得到鼠标的位置,这个坐标是相对于客户区的。getcursorpos也可以获取鼠标当前位置,这个位置是相对于屏幕 坐标的。具体的请参考MSDN
用API函数GetCursorPos来获取位置;;
鼠标x位置,
Shift
As
Integer;
&
P,
GetCursorPos
P
"
Y
End
If
End
Sub
方法二,
"
(ByVal
vKey
As
Long)
As
Integer
Private
Declare
Function
GetCursorPos
Lib
",
X
As
Single:"右键按下",哪怕鼠标不在应用程序内也行
在窗体上添加一个计时器;
&
P,最高位为1,用GetAsyncKeyState来获取是否按下左键
这种方法在任何时候都可以获取X
&
",其坐标值为所在容器的相对坐标值)
Private
Sub
Form_MouseDown(Button
As
Integer;
(lpPoint
As
POINTAPI)
As
Long
Private
Type
POINTAPI
X
As
Long
Y
As
Long
End
Type
Private
Sub
Timer1_Timer()
Dim
P
As
POINTAPI
X
=
GetAsyncKeyState(1)
If
X
=
-32767
Then
':"
X;
&
P:":
直接用
MouseDown事件
举例;;
鼠标y位置;,是屏幕中的位置(不是相对窗体的)
Private
Declare
Function
GetAsyncKeyState
Lib
"Y
End
If
X
=
GetAsyncKeyState(2)
If
X
=
-32767
Then
Cls
":",设置Interval属性为10
获取的位置的数字,
GetCursorPos
P
":(这种方法获取的是点的位置在窗体中;user32"
&
P;x返回的是16位整数:"user32";Y:",却该对象有MouseDown事件才行;
鼠标y位置;
鼠标x位置,
Y
As
Single)
If
Button
=
1
Then
Cls
",表明按下
Cls
"X
&
"X;左键按下"方法一
GetCursorPos不管鼠标在哪里都可以获取位置的
问题是
只有OnMouseMove的时候才获取鼠标位置
但是OnMouseMove又是你对话框的成员函数
所以说
只有鼠标在对话框内移动才会显示坐标的
但是并不是没办法实现的
首先
你可以在OnInitDialog里设置一个定时器
CDialog::OnInitDialog();
//
Add
"About"
menu
item
to
system
menu
//
IDM_ABOUTBOX
must
be
in
the
system
command
range
ASSERT((IDM_ABOUTBOX
&
0xFFF0)
==
IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX
<
0xF000);
CMenu
pSysMenu
=
GetSystemMenu(FALSE);
if
(pSysMenu
!=
NULL)
{
CString
strAboutMenu;
strAboutMenuLoadString(IDS_ABOUTBOX);
if
(!strAboutMenuIsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,
IDM_ABOUTBOX,
strAboutMenu);
}
}
//
Set
the
icon
for
this
dialog
The
framework
does
this
automatically
//
when
the
application's
main
window
is
not
a
dialog
SetIcon(m_hIcon,
TRUE);
//
Set
big
icon
SetIcon(m_hIcon,
FALSE);
//
Set
small
icon
//
TODO:
Add
extra
initialization
here
SetTimer(1,100,NULL);//时间设置短一点
显示的也快点
return
TRUE;
//
return
TRUE
unless
you
set
the
focus
to
a
control
然后为对话框添加WM_TIME消息
void
CAdcDlg::OnTimer(UINT
nIDEvent)
{
//
TODO:
Add
your
message
handler
code
here
and/or
call
default
POINT
pos;
GetCursorPos(&pos);
//取鼠标的坐标
CString
str;
strFormat("%d,%d",posx,posy);
m_dd=str;
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
m_dd为绑定在一个静态label空间上的CString
试试吧
这样就可以获得鼠标在任何时候的坐标了
cpoint
酣窢丰喝莶估奉台斧郡pt;
::getcursorpos(&pt);
这样就可以得到当前鼠标的位置了,(ptx,pty)。
要获得鼠标点击时的坐标不用自己获得的,mfc的消息映射函数的参数中有鼠标位置的这个参数的。
以上就是关于vc++如何获得鼠标指针在窗口中的位置全部的内容,包括:vc++如何获得鼠标指针在窗口中的位置、vb中如何获得鼠标位置 要在timer事件下获得、C++,如何获取程序窗口外的鼠标位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)