0

我正在制作一个 MATLAB GUI 来控制一组提供 ActiveX 接口的相机(Thorlabs DCC1545M)。我想要实现的功能之一是能够单击相机显示窗口并获取 currentPoint 数据(相对于窗口)。

我可以使用通用图形轻松实现这一点,但是一旦加载了 ActiveX 控件,在 ActiveX 区域上发生的鼠标事件就会被 ActiveX 控件使用,并且不会调用图形的事件函数。在该区域之外发生的鼠标事件按预期响应。

关于如何禁用 ActiveX 优先于鼠标事件的任何建议?还是其他解决方法?

干杯,

4

2 回答 2

0

这是一个工作的 Matlab 文件,应该可以满足您的要求:

exl = actxserver('excel.application');
exlWkbk = exl.Workbooks;
exlFile = exlWkbk.Open(['C:\mypath\ExcelCOM.xls']);
 exlSheet1 = exlFile.Sheets.Item('Sheet1');
 robj = exlSheet1.Columns.End(4);       % Find the end of the column
 numrows = robj.row;                    % And determine what row it is
 dat_range = ['D2:G' num2str(numrows)]; % Read to the last row
 rngObj = exlSheet1.Range(dat_range);
 exlData = rngObj.Value;
 for ii = 1:size(exlData,2)
    matData(:,ii) = reshape([exlData{2:end,ii}],size(exlData(2:end,ii)));
    lBoxList{ii} = [exlData{1,ii}];
 end
 exl.visible = true;
 for j=1:size(exlData,2)
     for k=1:13
         A(k+2,j)=0
         A(k,j)=matData(k,j)
     end
 end
 exlWkbk.Close
 exl.Quit
于 2013-06-28T20:36:44.607 回答
0

因此,我目前的解决方法是对当前相机帧执行 getImage,关闭 ActiveX 组件的可见性,并将其替换为图像。

“windowbuttonmotionfcn”在 MATLAB 中处理图像,而我真正失去的只是来自相机的连续实时馈送。

于 2013-07-02T15:37:45.403 回答