读书人

C#调用GetCursorPos为什么总是得到坐标

发布时间: 2011-12-29 22:09:38 作者: rapoo

C#调用GetCursorPos为什么总是得到坐标值(0,0)啊?
以下代码为什么返回 x,y会是0,0啊

//定义类
public class POINTAPI
{
public Int32 x;
public Int32 y;
}

//导入并执行GetCursorPos
[DllImport( "User32.dll ")]
private static extern Int32 GetCursorPos(POINTAPI lpPoint);
private void Tb_Print_Click(object sender, EventArgs e)
{
POINTAPI lPos = new POINTAPI();
GetCursorPos(lPos);
MessageBox.Show(lPos.x.ToString() + "\r\n " + lPos.y.ToString());
}

[解决办法]

[DllImport( "User32.dll ")]
private static extern Int32 GetCursorPos(ref POINTAPI lpPoint);
//估计是差一个ref ^^^

有标准.NET方法
Control.MousePosition

[解决办法]
//估计是差一个ref
这个函数前两天我刚用过,的确是要用到ref Point
不过奇怪的是他传得是class(引用类型)不是struct(值类型)

[DllImport( "User32.dll ")]
private static extern Int32 GetCursorPos(.....);

这个地方是受import的原始参数限制,不是DllImport这里写的参数限制?

----

伴水老大最近在忙啥?北京没去,可惜无缘拜见

读书人网 >C#

热点推荐