问题描述
- 请问一个MFC结构体数组的问题
-
INPUT iput[1];
memset(iput, 0, 1 * sizeof(INPUT));
iput[0].type = INPUT_KEYBOARD;
iput[0].ki.wVk = VK_ESCAPE;
SendInput(1, iput, sizeof(INPUT));
如果第一句改成INPUT iput;的话 最后一句的第二个参数前面要加上取地址,请问这是为
什么呀?
解决方案
INPUT iput[1];是一个数组类型,存储相关内容一个地址值, iput第一个元素就是指向iput数组的首地址
最后一句要的是一个地址,而不是内容
INPUT iput 是定义的一个变量后,存储是变量的内容,而不是一个地址,最后一句的要的是地址,所以要加&
解决方案二:
关键在于 SendInput() 函数的形参定义,它需要什么样的参数,你的变量就必须适应它的要求。如果它要求是指针,则
1)定义成 INPUT iput[1]; 时 input 是一个常量指针
2)定义成 INPUT iput; 时,input 是一个结构体变化,不是指针。所以在做为 SendInput() 函数的参数时必须取地址,按指针传参数。
解决方案三:
SendInput第二个参数是指针类型或者引用类型。
解决方案四:
一个结构体长度的问题
时间: 2024-11-01 10:36:14