VC++如何获取当前鼠标坐标点?

我是想做一个程序能够实现当前鼠标移动的任意点的位置,我在WM_ONMOUSEMOVE里写下面这些代码发现编译不了char*x;char*y;x=(LPSTR)point.... 我是想做一个程序能够实现当前鼠标移动的任意点的位置,我在WM_ONMOUSEMOVE里写下面这些代码发现编译不了
char *x;
char *y;
x=(LPSTR)point.x;
y=(LPSTR)point.y;
GetDlgItem(IDC_MOUSEX)->SetWindowText(x);//IDC_MOUSEY为静态文本框控件,下同
GetDlgItem(IDC_MOUSEY)->SetWindowText(y);

可以编译,但是不能运行,运行时鼠标只要移动程序就崩溃,请大家帮忙解决下谢谢
改成这样还是不能编译通过,郁闷
CString str;
GetCursorPos(&point);
GetDlgItem(IDC_MOUSEX)->SetWindowText(str.Format("x = %d", point.x));
GetDlgItem(IDC_MOUSEY)->SetWindowText(str.Format("y = %d", point.y));

提示:SetWindowTextA' : cannot convert parameter 1 from 'void' to 'const char *'
展开
 我来答
何处淬吴钩
2009-04-07 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2409万
展开全部
x=(LPSTR)point.x;
y=(LPSTR)point.y;

x,y是指针,把整型数据强制转换成指针,那内存地址就是整形数据,而非存放整形数据的地址。这样你如果对x,y指向的内存进行操作就会造成越界访问,而且x,y的内存地址很容易溢出,所以程序崩溃是很正常的了。
x=&point.x;
y=&point.y;
C_LIFEI
2009-04-07 · TA获得超过800个赞
知道小有建树答主
回答量:431
采纳率:0%
帮助的人:353万
展开全部
前面的都没问题,
SetWindowText(str.Format("x = %d", point.x));
SetWindowText函数在MSDN中的原型为:
void SetWindowText( LPCTSTR lpszString );
它要求一个LPCTSTR 类型的字符串,你把str.Format()放到SetWindowText 函数的外部。 也就是:
CString str;
GetCursorPos(&point);
str.Format("x = %d", point.x);
GetDlgItem(IDC_MOUSEX)->SetWindowText(str);
str.Format("x = %d", point.y);
GetDlgItem(IDC_MOUSEX)->SetWindowText(str);
因为LPCTSTR 和CString类不用转换,可以实现很多互操作的。

我做一个在状态栏显示鼠标位置的例子,没有问题。
// 鼠标移动时,状态栏显示当前鼠标的坐标
void CPointsSetView::OnMouseMove(UINT nFlags, CPoint point)
{
CString sMousePos;
sMousePos.Format("x=%d,y=%d",point.x,point.y);
GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(sMousePos);

CView::OnMouseMove(nFlags, point);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
intehel
2009-04-07 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1769万
展开全部
GetCursorPos
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shangqt
2009-04-07 · TA获得超过159个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:119万
展开全部
CString str;
GetCursorPos(&point);
str.Format("x = %d", point.x);
GetDlgItem(IDC_MOUSEX)->SetWindowText((char*)(LPCTSTR)str);
str.Format("x = %d", point.y);
GetDlgItem(IDC_MOUSEY)->SetWindowText((char*)(LPCTSTR)str);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式