如何在用户点击鼠标左键后立即获得鼠标屏幕坐标(用鼠标点击坐标 - 换句话说)。这是一个用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.x
的JavaScript数组pt.y
,然后我使用此数组通过JS在我的页面上呈现此坐标。
这个只在页面开始时给我鼠标坐标。
然后我在WM_LBUTTONUP == MK_RBUTTON
尝试if
;它给了我一些随机的大数字......我该怎么办?
你能帮助我吗?
答案 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);