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;
}
输出为
kjndfgdfgkhgfhfhfgd
jifdgdfgg
1,2:j
你的类是继承自CScrollView类对吧?那你在OnLButtonDown()函数中最开始加入如下代码:
CClientDC dc(this);
OnPrepareDC(&dc);
dcDPtoLP(&point);
接下来,point中的坐标应该就符合你的意愿了!
以上就是关于C++里用什么函数获取鼠标位置全部的内容,包括:C++里用什么函数获取鼠标位置、用C语言或C++ 实现鼠标画图,并可以定位鼠标坐标、C++,如何获取程序窗口外的鼠标位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)