我怎么能得到HWND(本地窗口句柄)的客户区UIPANEL的MATLAB图形?

49次意见(最近30天)
Evgeny公关
Evgeny公关 2011年3月12日
这就跟你问声好!
我需要从外部访问MATLAB图形的给定区域。我想问这个区域,使用UIPANEL。我可以得到本机窗口句柄的UIPANEL,使用无文档的matlabo - java接口?
我试着用这个方法:
hFig =图();
警告(“关闭”,MATLAB: HandleGraphics: ObsoletedProperty: JavaFrame”);
jh =得到(hFig,“JavaFrame”);
hwnd =得到(jh,“nativeWindowHandle”);
而是我访问客户区的方式,它包含所有UI组件。但这不是我需要的。
我将非常感谢关于这个问题的任何信息。谢谢!

0评论

登录置评。

接受的答案

实验后奥特曼
实验后奥特曼 2011年4月11日
uipanel没有自己的HWND。如果您使用像spy++(与Microsoft Visual Studio捆绑在一起)或Winspector这样的实用程序,您会发现实际的窗口句柄非常少。其中,您可以获得两个:
1.顶层窗口框架(SunAwtFrame) HWND -
jFrame = get(处理(hFig),“JavaFrame”);
HWND = jFrame.fFigureClient.getWindow.getHWND;
2.HWND -这是 NativeWindowHandle 你在上面注明的财产价值。(有几种访问此句柄的方法)。如果使用此句柄,请确保检查相应的 NativeWindowHandleValid 财产。例如,如果窗口是不可见的(例如,关闭),这个属性将有一个假值。
3.这是类的子元素 NativeWindowHandle HWND,和可得:
jFrame = get(处理(hFig),“JavaFrame”);
HWND = int32 (jFrame.getNativeChildWindowHandle / 2 ^ 32);
HWND = bitshift (jFrame.getNativeChildWindowHandle, -32);%替代
实验后奥特曼

0评论

登录置评。

更多的答案(2)

Evgeny公关
Evgeny公关 2011年3月12日
看来我的方向是对的……:)
例如:
h =图;
jc = javacomponent (java.awt。画布,[100 100 200 200],h);
drawnow;
hwnd = jc.getPeer.getHWnd;
只有一个问题:如何获得java.awt。从UIPANEL帆布吗?如果UIPANEL基于Canvas…:)

0评论

登录置评。


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

1评论

Evgeny公关
Evgeny公关 2011年3月12日
是的,我使用这个函数和Yair Altman写的其他函数,例如UIINSPECT。
UIPANEL组件不能使用FINDJOBJ找到。:(
例如:
h =图;
hp = uipanel('Parent', h, 'Units', 'pixels', 'Position', [10 10 200 200 200])
findjobj(惠普、“nomenu”)

登录置评。

登录来回答这个问题。