是一个被认为是指针的本地CGEventRef

Is a local CGEventRef considered a pointer?

本文关键字:指针 CGEventRef 认为是 一个      更新时间:2023-10-16

当我用本地CGEventRef制作键盘事件时,我注意到,即使它不是指针,你也可以用函数"编辑"它的属性,像这样:

CGEventRef eventRef = CGEventCreateKeyboardEvent(....);
CGEventSetFlags(eventRef, ...);
CGEventSetType(eventRef, kCGEventKeyDown);

然后你Post事件。我知道如果你做这样的事;

Player p; //assume Player has an x property and a y property (both public)
p.x = 100000; p.y = -431;
void changePlayerPosition(Player player__, int x, int y){
   player__.x = x; player__.y = y;
}
changePlayerPostion(10, 43);
std::cout << p.x << p.y; //prints x=1000000 y=-431 even though we tried to edit the values to 10 and 43 in the function

即使我们在changePlayerPosition函数中编辑它们,值也不会改变。我知道你可以通过在参数中获得player__的地址来解决这个问题,即Player &player__

这是一个例子。我想我真正的问题是,CGEventRef eventRef属性如何像flag, type, etc.一样编辑而不传递指针或地址在函数中,如CGEventSetFlags, CGEventSetType, etc.

p。一些代码会有帮助

文档在这里:https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/#//apple_ref/c/tdef/CGEventRef

引用:

typedef struct __CGEvent *CGEventRef;

它是一个指针