How to move figure window to front of all programs?

89 Ansichten (letzte 30 Tage)
Brandon
Brandon am 1 Okt. 2016
Beantwortet: DGM am 9 Nov. 2024 um 16:31
Is there a way to force a figure window to show in front of all other windows (not just Matlab ones, but other programs)?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 1 Okt. 2016
If you are using MS Windows you could experiment with using the 'topmost' command in Jan's File Exchange contribution https://www.mathworks.com/matlabcentral/fileexchange/31437-windowapi
  1 Kommentar
Brandon
Brandon am 1 Okt. 2016
Works perfectly! I was already using WindowAPI for some things so this is even better. Thank you.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Raph
Raph am 29 Dez. 2022
Bearbeitet: Raph am 29 Dez. 2022
This question is ambiguous, but I think what "most people" would be looking for searching for an answer to this question are the following:
How to bring to the front a specific figure handle?
h = figure;
h2 = figure;
% bring figure with handle h to the front
figure(h);
How to bring to the front a known figure with a given name?
figure('Name','A cool figure'); % create a figure and assign a unique name
allfigs = findall(0,'Type', 'figure'); % finds the handles of figures
desiredHandle = findall(allfigs, 'Name', 'A cool figure'); % finds the handles of figure with the unique name
if numel(desiredHandle)==1 % make sure its not deleted or actually is a valid handle
figure(desiredHandle(1)); % brings to front
end

Kamil Lipinski
Kamil Lipinski am 8 Nov. 2024 um 11:54
Bearbeitet: Kamil Lipinski am 8 Nov. 2024 um 11:55
Try this, it takes all figures to the front BFF

DGM
DGM am 9 Nov. 2024 um 16:31
If you want the window to stay on top even if other windows are given focus, you can set that in the window manager.
% you have handle to a figure window
hfig = gcf;
inpict = imread('peppers.png');
imshow(inpict)
% bring it to the front and make it stay atop other windows
stickontop(hfig)
function stickontop(hfig)
% STICKONTOP(HFIG)
% Brings the specified figure window to the front and sets the
% 'always on top' flag. Relies on wmctrl and a linux environment.
% Docked figures are ignored.
% cache current title
oldtitle = get(hfig,'name');
oldntstate = get(hfig,'numbertitle');
% make the window externally identifiable
set(hfig,'name','windowtoberaised');
set(hfig,'numbertitle','off');
% configure properties in the window manager
pause(0.5) % wait for the WM
system('wmctrl -r "windowtoberaised" -b add,above');
% reset to old title
set(hfig,'name',oldtitle);
set(hfig,'numbertitle',oldntstate);
end
Of course, there are things that might cause the window to lose its "always on top" status again, so this might not be as persistent as one might hope.
A similar approach can be used to shade, minimize, or maximize windows, or move windows between workspaces, and it doesn't rely on version-dependent figure properties.

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!

Translated by