vc++如何获得鼠标指针在窗口中的位置

vc++如何获得鼠标指针在窗口中的位置,第1张

鼠标在窗口上移动时,会产生mousemove消息,在这个消息里可以得到鼠标位置,这个坐标是相对于客户区的。getcursorpos也可以获取鼠标当前位置,这个位置是相对于屏幕 坐标的。具体的请参考MSDN

用API函数GetCursorPos来获取位置;;

鼠标x位置,

Shift

As

Integer;

&

P,

GetCursorPos

P

Print

"

Y

End

If

End

Sub

方法二,

"

(ByVal

vKey

As

Long)

As

Integer

Private

Declare

Function

GetCursorPos

Lib

&quot,

X

As

Single:"右键按下&quot,哪怕鼠标不在应用程序内也行

在窗体上添加一个计时器;

&

P,最高位为1,用GetAsyncKeyState来获取是否按下左键

这种方法在任何时候都可以获取X

&

&quot,其坐标值为所在容器的相对坐标值)

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:&quot:

直接用

MouseDown事件

举例;;

鼠标y位置;,是屏幕中的位置(不是相对窗体的)

Private

Declare

Function

GetAsyncKeyState

Lib

&quotY

End

If

X

=

GetAsyncKeyState(2)

If

X

=

-32767

Then

Cls

Print

&quot:&quot,设置Interval属性为10

获取的位置的数字,

GetCursorPos

P

Print

&quot:(这种方法获取的是点的位置在窗体中;user32"

&

P;x返回的是16位整数:"user32";Y:&quot,却该对象有MouseDown事件才行;

鼠标y位置;

鼠标x位置,

Y

As

Single)

If

Button

=

1

Then

Cls

Print

&quot,表明按下

Cls

Print

&quotX

&

"X;左键按下&quot方法一

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++,如何获取程序窗口外的鼠标位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9297337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存