无法返回 POINT 以在其他函数中使用

Can't return the POINT to use in another function

本文关键字:函数 其他 返回 POINT      更新时间:2023-10-16

得到这个代码:
(我正在使用FireBreath)

TestPluginAPI.h
FB::variant ClickSemulationMove(POINT);
FB::variant ClickSemulationClick(POINT);

TestPluginAPI.cpp
FB::variant TestPluginAPI::ClickSemulationClick(POINT pt)
{
ShowCursor(true);
MouseLeft();
MouseReturn(pt.x, pt.y);
ShowCursor(true);
return 0;
}
FB::variant TestPluginAPI::ClickSemulationMove(POINT &pt)
{
MouseMove(-325, 605);
POINT pt;
GetCursorPos(&pt);
return 0;
} 

这个想法是,首先去ClickSemulationMove,从GetCursorPos保存pt(我需要这个pt,因为我必须在移动鼠标之前得到它,然后返回那里),然后将其传递给ClickSemulationClickMouseReturn中使用。
但是我得到了以下错误:
C2511: FB::variant TestPluginAPI::ClickSemulationMove(POINT &) overloaded member function not found in "TestPluginAPI"error C2665: FB::variant_detail::conversion::convert_variant: none of the 5 overloads can convert all parameter(这个错误得到了下面的一些代码和参数,如果需要,将发布)这听起来很简单,但我到底做错了什么?

这里有两个问题;第一个是你不能通过引用将参数传递给NPAPI方法,因此你也不能传入firebreath方法。第二,你不能使用任意的类型。

你有几个选择:

  1. 对于输入,我建议您只需将int x, int y传入函数。
  2. 对于输出,你可以传递一个字符串,你解码或FB::VariantList与你需要的值将成为一个javascript数组。你也可以返回一个FB::VariantMap,它将成为一个javascript对象,允许你传递命名的x和y值。
  3. 如果你真的想通过引用来传递东西,你可以传递一个FB::JSObjectPtr,它需要是一个javascript对象或数组({}或[]),你已经保存在javascript中。然后,您可以通过调用->SetProperty("x", xval)等或->SetProperty(0, xval)来更改它,如果您使用数组。你也可以调用->Invoke("push", FB::variant_list_of(xval))来将数组压入。
相关文章: