C++里用什么函数获取鼠标位置

C++里用什么函数获取鼠标位置,第1张

OnMouseMove的后一个参数就是鼠标的当前位置

void CTest1View::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CView::OnMouseMove(nFlags, point);

CPoint MousePosition = point;

}

楼主你好,我用的是c语言。

c语言绘制鼠标的一般步骤是

1寄存器中断,得到鼠标的位置

2在改位置画上鼠标

3后继处理

4重复上面步骤

那么,在画鼠标的方式上,又有3种不同的方法(就我知道的)

1直接画线法(参考文献)

>

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 m_pt的成员变量,然后在视图类中添加鼠标左击消息处理WM_LBUTTONDOWN即为:

void CMy48View::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

m_pt=point;

CView::OnLButtonDown(nFlags, point);

}这样就将鼠标左键的点保存在m_pt中了

设置两个全局的坐标类 CPoint pOld和pCurrent 分别记录上一次按下左键时候的坐标和当前点的坐标,程序初始化的时候pOld = pCurrent ;

void CPenDlg::OnLButtonDown(UINT nFlags, CPoint point)

{

pCurrent = point;

//你的画线代码

pOld = pCurrent;

CDialog::OnLButtonDown(nFlags, point);

}

用ReadConsoleOutputCharacterA函数,在windowsh中。

给你一个封好的函数吧,其作用是提取出窗口中第x行y列的位置的字符是什么。(如果没有东西会返回空格符号)。

#include<windowsh>

//下标从1开始,x行y列。

char GetStr(int x, int y)

{

COORD pos;

//ReadConsoleOutputCharacterA里的x和y指的是x列y行,且从0开始标号 

posX = y-1;posY = x-1;

LPSTR str;

DWORD read;

ReadConsoleOutputCharacterA(GetStdHandle(STD_OUTPUT_HANDLE), str, 1, pos, &read);

return str[0];

}

使用举例:

int main()

{

printf("kjndfgdfg\nkhgfhfhfgd\njifdgdfgg\n");

printf("1,2:%c\n",GetStr(1,2));

return 0;

}

输出为

kjndfgdfg

khgfhfhfgd

jifdgdfgg

1,2:j

你的类是继承自CScrollView类对吧?那你在OnLButtonDown()函数中最开始加入如下代码:

CClientDC dc(this);

OnPrepareDC(&dc);

dcDPtoLP(&point);

接下来,point中的坐标应该就符合你的意愿了!

以上就是关于C++里用什么函数获取鼠标位置全部的内容,包括:C++里用什么函数获取鼠标位置、用C语言或C++ 实现鼠标画图,并可以定位鼠标坐标、C++,如何获取程序窗口外的鼠标位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存