日期:2014-05-19  浏览次数:20745 次

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这里写的参数限制?

----

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