0

如何在用户单击鼠标左键后立即获取鼠标屏幕坐标(鼠标单击坐标 - 换句话说)。这是一个用 FireBreath 编写的插件。我试图使用:

FB::variant TestPluginAPI::Detect()
{
POINT pt;

if (WM_LBUTTONUP)
{
    GetCursorPos(&pt);
}
FB::VariantList Dtd = FB::variant_list_of(pt.x)(pt.y);
return Dtd;

Dtd它返回带有pt.xand的 JavaScript 数组pt.y,然后我使用这个数组通过 JS 在我的页面上呈现这个坐标。这个只在页面开始时给我鼠标坐标。

WM_LBUTTONUP == MK_RBUTTON然后我在尝试if;它给了我一些随机的巨大数字......我该怎么办?
你会帮助我吗?

4

2 回答 2

2

如果你想在你的 javascript 函数中获取鼠标位置,你可以在你的插件中创建一个回调 JSAPI 函数,并在单击鼠标左键时调用它,参数为鼠标坐标的 FB::VariantList。您可以通过在继承自 FB::PluginCore 的类中重载 onMouseDown 事件来检测鼠标点击。要注册 onMouseDown 事件,您可以在标头中使用以下代码。
BEGIN_PLUGIN_EVENT_MAP()
   EVENTTYPE_CASE(FB::MouseDownEvent, onMouseDown, FB::PluginWindow) END_PLUGIN_EVENT_MAP()

virtual bool onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *);

onMouseDown 可以定义为 -
bool MirrarOrnaments::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *)
{

   if(evt->m_Btn == FB::MouseButtonEvent::MouseButton_Left)
   {
     /**
      * apiPtr is the pointer to FB::JSAPIPtr
      * mousePositionCallback is the JSAPI function which takes variant list of mouse
      * co-ordinates as argument
      */
      apiPtr->invoke("mousePositionCallback", FB::variant_list_of(evt->m_x)(evt->m_y));
   }
}

希望这是您要问的问题。你的问题有点含糊。

于 2013-05-13T07:44:53.310 回答
1

WM_LBUTTONUP 是一个 WinAPi 函数,因此您应该可以访问与消息一起出现的 lParam。

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam); 
于 2013-05-12T15:55:58.050 回答