[DllImport("user32.dll")]
// public static extern int GetAsyncKeyState(int vKey); //1
// protected static extern short GetAsyncKeyState(int vKey); //2
第一种方法在我的机器上面没有问题,但是换了机器就不行,GetAsyncKeyState返回值很奇怪没有见过的值,每次运行程序返回结果都不一样。第二种我的机器和其他机器都正常。
int a;是声明,如果不给它赋值,也就是定义,你无法使用它。
a = 10; 是定义。
int a = 10; 是声明+ 定义。
根据msdn
函数原型是
SHORT WINAPI GetAsyncKeyState(
In�0�2int vKey
);
当然,把函数定义成int也没事,因为c++会自动将short转换成int。
至于protected、public,可见性不同,但是如果你定义在窗体上,或者在本类使用,则没有什么区别。
区别是当然有,short是Int16也就是16位表示范围为0~65535,而int是Int32也就是32位表示范围0~4.29e+9,所能表示的范围不一样,也就是说你这个接口返回值如果大于short类型所能表示的范围的话将会返回short类型的补码给你,例如你这个接口返回65537的话就会返回给你-1,其他的没什么区别