我怎样才能得到UIPANEL对MATLAB图客户端区域的HWND(本地窗口句柄)?

50次(最近30天)
Evgeny公关
Evgeny公关 12 2011年3月
嗨!
我需要有从外到MATLAB图的给定区域的访问。我想问一下这个区域,使用UIPANEL。我能否获得UIPANEL本地窗口句柄,使用无证MATLAB-Java界面?
我试着用这个方法:
hFig =图();
警告(“关”MATLAB: HandleGraphics: ObsoletedProperty: JavaFrame”);
JH = GET(hFig,'JavaFrame');
HWND = GET(JH,'nativeWindowHandle');
但我的方式访问客户端区域,其中包含了所有的UI组件。但是,这不是我所需要的。
我会在这个问题上的任何信息,非常感谢。谢谢!

0评论

登录置评。

接受的答案

亚伊尔奥特曼
亚伊尔奥特曼 11 2011年4月
uipanels没有自己的HWND。如果您使用实用工具,如间谍++(这是捆绑与Microsoft Visual Studio)或Winspector,你会发现很少有实际的窗口句柄。这些,你可以得到两个访问:
1.顶层窗框(SunAwtFrame)HWND -
的JFrame = GET(手柄(hFig)'JavaFrame');
HWND = jFrame.fFigureClient.getWindow.getHWND;
2.轴画布(SunAwtCanvas)HWND - 这是 NativeWindowHandle 属性值,你已经如上所述。(有访问该手柄的几个备选方案)。如果你使用这个句柄,一定要检查相应的 NativeWindowHandleValid 属性。例如,如果该窗口不可见(例如,关闭),则此属性一个假值。
3. OpenGL的(MatlabOpenGLWindow)HWND - 这是的一个孩子 NativeWindowHandle HWND,并且可以从得到:
的JFrame = GET(手柄(hFig)'JavaFrame');
HWND = INT32(jFrame.getNativeChildWindowHandle / 2 ^ 32);
HWND = bitshift (jFrame.getNativeChildWindowHandle, -32);替代%
亚伊尔奥特曼

0评论

登录置评。

更多的答案(2)

Evgeny公关
Evgeny公关 12 2011年3月
看来,我在正确的方向已经走远了...... :)
例如:
H =图。
JC = javacomponent(java.awt.Canvas中,[100 100 200 200],H);
drawnow;
HWND = jc.getPeer.getHWnd;
只有一个问题:如何从UIPANEL得到java.awt.Canvas的?如果基于画布UIPANEL ... :)

0评论

登录置评。


奥列格·科马罗夫
奥列格·科马罗夫 12 2011年3月
你可能想给看看 查找Matlab图形对象的java句柄 在FEX。
可以节省你很多时间。
奥列格

1条评论

Evgeny公关
Evgeny公关 12 2011年3月
是的,我用这个功能和其它功能由亚伊尔奥特曼writen,例如UIINSPECT。
使用FINDJOBJ找不到UIP​​ANEL组件。:(
例如:
H =图。
hp = uipanel('Parent', h, 'Units', 'pixels', 'Position', [10 10 200 200 200])
findjobj(HP, 'nomenu')

登录置评。

登录回答这个问题。