How can I get the HWND (Native Window Handle) of the client region of UIPANEL on MATLAB Figure?
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi!
I need to have access from the outside to a given region of MATLAB Figure. I want to ask this region, using UIPANEL. Can I get the native window handle for UIPANEL, using undocumented MATLAB-Java interface?
I tried using this approach:
hFig = figure();
warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame');
jh = get(hFig, 'JavaFrame');
hwnd = get(jh, 'nativeWindowHandle');
But the way I access the client area , which contains all the UI Components. But this is not what I need.
I would be very grateful for any information on this issue. Thanks!
0 Kommentare
Akzeptierte Antwort
Yair Altman
am 11 Apr. 2011
uipanels don't have their own HWND. If you use a utility such as Spy++ (which is bundled with Microsoft Visual Studio) or Winspector, you will see that there are very few actual window handles. Of these, you can get access to two:
1. Top-level window frame (SunAwtFrame) HWND -
jFrame = get(handle(hFig), 'JavaFrame');
HWND = jFrame.fFigureClient.getWindow.getHWND;
2. Axis canvas (SunAwtCanvas) HWND - this is the NativeWindowHandle property value that you have noted above. (there are several alternatives of accessing this handle). If you use this handle, be sure to check the corresponding NativeWindowHandleValid property. For example, if the window is not visible (e.g., closed), this property will have a false value.
3. OpenGL (MatlabOpenGLWindow) HWND - this is a child of the NativeWindowHandle HWND, and can be gotten from:
jFrame = get(handle(hFig), 'JavaFrame');
HWND = int32(jFrame.getNativeChildWindowHandle/2^32);
HWND = bitshift(jFrame.getNativeChildWindowHandle,-32); %alternative
Yair Altman
0 Kommentare
Weitere Antworten (2)
Siehe auch
Kategorien
Mehr zu Interactive Control and Callbacks finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!