判断鼠标按在给定的时刻

45视图(30天)
我想知道图类有一些(可能是隐藏的)属性表示如果鼠标被按下(按钮)在当下时刻,房地产是阅读。如果图上下按钮事件的事件,也会解决我的问题。
我知道我可以设置WindowButtonDownFcn WindowButtonUpFcn通知一个全局变量来跟踪在使用鼠标时,但这是非常不现实的(在我的代码WindowButtonDownFcn经常会改变取决于用户的行为)

接受的答案

1月
1月 2017年9月19日
编辑:1月 2017年9月19日
它会很容易,如果你不改变WindowButtonDownFcn频繁,但保持静态和使用 持续的 变量分支。然后你必须插入的代码存储按钮状态只在一个位置。
如果你检查按钮的状态,你也必须考虑当前活动窗口。你不想对单击任务栏和桌面。
[编辑]FEX提交是不工作的。试试这个:
% ! ! !未经考验的! ! !
函数[L R M] = GetMouseKeyStatus ()
如果~ ispc
错误(只运行在Windows。);
结束
如果~ libisloaded (“user32”)
loadlibrary (“user32.dll”,“user32.h”);
结束
L = calllib (“user32”,“GetAsyncKeyState”int32 (1)) ~ = 0;
R = calllib (“user32”,“GetAsyncKeyState”int32 (2)) ~ = 0;
M = calllib (“user32”,“GetAsyncKeyState”int32 (4)) ~ = 0;
结束
3评论
布鲁诺陈德良
布鲁诺陈德良 2020年11月14日
编辑:布鲁诺陈德良 2020年11月14日
LOADLIBRARY似乎不工作在我的系统(Windows 10, 20 h2)
K > > loadlibrary (“user32.dll”,“user32.h”)
错误使用loadlibrary
可以找不到文件user32.h。
错误在loadlibrary
user32。然而dll仍然存在。
这是我的解决方案。我创建了一个名为WinMouse的h文件。h和把它连同ismousedpressed.m
函数keypressed = ismousedpressed ()
% keypressed = ismousedpressed ()
%的回报
%没有按钮被按下
% 1是左按钮
% 2是正确的按钮
% 3滚动按钮推动(而不是滚动)
%的限制:Windows
%提示:调用ismousedpressed()当你的应用开始
%,当真正需要;ismousedpressed()返回结果更快。
%
%作者:Mbvalentin
% //www.tianjin-qmedu.com/matlabcentral/fileexchange/61976-check-if-mouse-button-is-pressed
%由布鲁诺陈德良修改
如果~ libisloaded (“user32”)
试一试
loadlibrary (“C: \ WINDOWS \ system32系统\ user32.dll”,“user32.h”);
%的用户。h是在最近的某些版本的Windows
%我们替换为一个简单的自定义的头文件
这里= fileparts (mfilename (' fullpath '));
loadlibrary (“C: \ WINDOWS \ system32系统\ user32.dll”,在这里“\ WinMouse.h”]);
结束
结束
左= calllib (“user32”,“GetAsyncKeyState”int32 (1)) ~ = 0;
正确的= calllib (“user32”,“GetAsyncKeyState”int32 (2)) ~ = 0;
滚动= calllib (“user32”,“GetAsyncKeyState”int32 (4)) ~ = 0;
keypressed = max ((1 2 3)。*双([左右滚动]));
结束% ismousedpressed
文件WinMouse。h,这假设GetAsyncKeyState签名不会改变Windows操作系统(可能)
/ * WinMouse.h
*更换user32。h如果这不是可用的
看到ismousedpressed.m
文件必须位于同一个地方ismousedpressed * /
GetAsyncKeyState (
intvKey
);

登录置评。

答案(1)

Ankit Bhardwaj
Ankit Bhardwaj 2017年4月24日
编辑:Ankit Bhardwaj 2017年4月24日
你可以使用ButtonDownFcn调图。这个回调执行当用户单击鼠标按钮图窗口的指针,而不是在子对象如uicontrol uipanel,轴或轴的孩子。此外,鼠标选择类型返回“正常”,“扩大”,“alt”或“开放”。MATLAB维护这个属性提供的信息最后一个鼠标按钮按图窗口内发生。这个信息显示的类型选择。请通过以下文档了解回调图对象的属性。
//www.tianjin-qmedu.com/help/matlab/ref/figure-properties.html zmw57dd0e274973
2的评论

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!