获取鼠标屏幕坐标点击
如何在用户单击鼠标左键后(鼠标点击坐标 - 换句话说)获取鼠标屏幕坐标。这是一个用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;
它返回的JavaScript Array Dtd
与pt.x
和它pt.y
,然后我用这个数组来呈现这个坐标经JS我的网页上。 这只能在页面启动时给我鼠标坐标。
然后我试图WM_LBUTTONUP == MK_RBUTTON
在if
;它给了我一些随机的大数字......我能做什么?
你会帮助我吗?
如果你想在你的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));
}
}
希望这是您要问什么。你的问题有点含糊。
WM_LBUTTONUP是一个WinAPi函数,所以你应该有权访问与消息一起的lParam。
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
lParam? “有权访问”是什么意思?它是窗口函数的一部分吗?但如果它是浏览器插件,我可以“访问”它? – 2013-05-12 19:40:29
你用winapi标记了问题并使用了WM_LBUTTONUP,所以我假设你得到了包含lParam的windows消息事件。你从哪里得到这个WM_LBUTTONUP? lParam是附加信息,如果发生按钮向上事件,它将在事件发送时发送当前的X/Y位置。 – Devolus 2013-05-12 19:42:09
无论我的窗口的窗口消息事件如何,我是否可以直接点击鼠标坐标?因为我现在有点困惑,我可以得到它的浏览器窗口。 – 2013-05-12 21:57:34
谢谢,这似乎是我想要的。 – 2013-05-14 00:19:26
你可以给我一些提示,这个apiPtr可以看看我的代码,我只是不明白我怎么才能正确地写它,我怎么能得到它 – 2013-05-19 20:07:22
你的apiPtr是FB :: JSAPIPtr你在createJSAPI返回功能。你可以像这样分配它 - apiPtr = PluginAPIPtr(new PluginAPI(FB :: ptr_cast(shared_from_this()),m_host)); –
2013-06-05 12:12:22