无法返回POINT以在另一个函数中使用

时间:2013-04-05 16:26:26

标签: c++ visual-c++ point firebreath

得到这个代码:
(我正在使用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,从pt保存GetCursorPos(我需要这个pt,因为我必须在移动鼠标之前得到它,然后返回那里)。 )然后将其传递给ClickSemulationClick以在MouseReturn中使用 但我有以下错误:
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(这个错误得到了一些代码和参数,如果需要的话会发布) 这听起来很简单,但究竟我做错了什么?

1 个答案:

答案 0 :(得分:1)

这里有2个问题;第一个是你不能通过引用将参数传递给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))来推送数组。