单击获取鼠标屏幕坐标

时间:2013-05-12 15:49:04

标签: c++ winapi firebreath

如何在用户点击鼠标左键后立即获得鼠标屏幕坐标(用鼠标点击坐标 - 换句话说)。这是一个用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;

它返回了包含Dtdpt.x的JavaScript数组pt.y,然后我使用此数组通过JS在我的页面上呈现此坐标。 这个只在页面开始时给我鼠标坐标。

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

2 个答案:

答案 0 :(得分: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));
   }
}

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

答案 1 :(得分:1)

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

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam);