Кросплатформенно скрыть кнопуц формы на панели задачь
Модератор: Модераторы
Кросплатформенно скрыть кнопуц формы на панели задачь
Можно ли и как кросплатформенно скрыть кнопуц формы на панели задачь опрерационной системы?
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Можно, если в Линуксе использумый "рабочий стол" придерживается Xorg-соглашений по этой части, а не занимается "самодеятельностью". То есть измените вопрос на "Можно ли скрыть (средствами Xorg) кнопцу на панель --используемого Вами линкусовог дестктоп-менеджера-- " ?
Нет, я имел в виду Линукс/Виндовс
Впрочем, если знаете решеения для данных ОС по отдельности, буду признателен. Если ещё подскажжите в какие директивы компилятора его (решение) заключить буду вообще безгранично благодарен.
Впрочем, если знаете решеения для данных ОС по отдельности, буду признателен. Если ещё подскажжите в какие директивы компилятора его (решение) заключить буду вообще безгранично благодарен.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Вопрос состоит в : какой конкретно "менеджер окон" используете в Линуксе ? GNOMe, KDE, IceWM, XFCE,..
Добавлено спустя 1 минуту 54 секунды:
KDE & IceWM как правило четко придерживаются правил и API Xorg.
Добавлено спустя 1 минуту 54 секунды:
KDE & IceWM как правило четко придерживаются правил и API Xorg.
debi12345, это в корне не корректный вопрос, я говорю о кросплатформенности, откуда я могу знать что будет у пользователя? Подскажи те способы какие знаеш.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Мартин в МСЕгуй далает так (как обрабатывается опция "БЕЗ ТАСКБАРа" ):
1) ЛИНУКС - в цикле обработки ГУЙ-событий программы после ее старта:
2) в гэймшеллке - в процедуре создания основного окна программы :
Добавлено спустя 11 минут 39 секунд:
Кстати окно в стиле "popup" тоже не должно попадать на таскбар.
1) ЛИНУКС - в цикле обработки ГУЙ-событий программы после ее старта:
Код: Выделить всё
function gui_getevent: tmseevent;
var
xev,xev2: xevent;
[..]
xnextevent(appdisp,@xev);
case xev.xtype of
[..]
mapnotify: begin
with xev.xmap do begin
result:= twindowevent.create(ek_show,xwindow);
if application.findwindow(xwindow,window1) and
(wo_notaskbar {-- user defined --} in window1.options) then begin
setnetatomarrayitem(xwindow,net_wm_state,net_wm_state_skip_taskbar); // <<< THIS COMMAND
end;
end;
end;
2) в гэймшеллке - в процедуре создания основного окна программы :
Код: Выделить всё
windowstyle:= windowstyle or ws_clipchildren;
if (transientfor <> 0) or (options * [wo_popup,wo_message,wo_notaskbar {--user defined--}] <> []) then begin
if transientfor <> 0 then begin // если запомнено к стэку какого окна логмчески относится,
ownerwindow:= transientfor; // то назначить это окно родитесльским
end;
id:= windows.CreateWindowex(windowstyleex,widgetclassname,nil,windowstyle,
rect1.x,rect1.y,rect1.cx,rect1.cy,ownerwindow{transientfor},0,hinstance,nil); // THIS COMMAND
Добавлено спустя 11 минут 39 секунд:
Кстати окно в стиле "popup" тоже не должно попадать на таскбар.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
А чем свойство у формы ShowInTaskBar не подходит?
1) не лежит на виду и 2) написано мелким шрифтом
ПС:
оно реально работает в гэймшелловом лазаре ? У Мартина в МСЕ вдруг перестало - отписАл ему сегодня.
А чем свойство у формы ShowInTaskBar не подходит?
Ну почему же не подходит, не знал. Спасибо.
ShowInTaskBar У этой штуки Linux есть особенность, эта опция не действует на первую создаваемую форму в проекте
Но это легко обходится, как здесь https://code.google.com/p/vpnpptp/
http://bugs.freepascal.org/view.php?id=17294
Но это легко обходится, как здесь https://code.google.com/p/vpnpptp/
http://bugs.freepascal.org/view.php?id=17294
