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 *' 展开
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 *' 展开
4个回答
展开全部
前面的都没问题,
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);
}
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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GetCursorPos
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询