Инструменты пользователя

Инструменты сайта


pro_pol:исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
pro_pol:исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а [2019/01/07 17:31] – создано dwadminpro_pol:исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а [2022/02/16 20:40] (текущий) dwadmin
Строка 1: Строка 1:
 +http://www.asvcorp.ru/tech/linux/xwinprg/functions/index.html - Функции библиотеки Xlib
 +
 +https://coderoad.ru/13351297/%D0%9A%D0%B0%D0%BA%D0%BE%D0%B2%D0%B0-%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B0-XInitThreads
 +
 +https://www.x.org/releases/X11R7.5/doc/man/man3/XInitThreads.3.html
 +
 +https://jeka.by/ask/141/ubuntu-autoload-rc.local/
 +Можно скопировать приложение из /usr/share/applications/AppName.desktop в /etc/xdg/autostart
 +
 +https://coderoad.ru/49491918/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0-%D0%B8%D0%B7-keycode-X11-XGrabKey
 +
 +https://github.com/skeeto/pure-linux-threads-demo
 +https://nullprogram.com/blog/2015/05/15/
 +
 +https://evileg.com/ru/post/170/
 +
 +{{ :pro_pol:xlib.odt |xlib.odt}}
 +{{ :pro_pol:xlib.pdf |xlib.pdf}}
 +
 +https://tldp.org/HOWTO/XWindow-User-HOWTO/runningx.html
 +
 +http://dfe.petrsu.ru/koi/posob/X/index.html
 +
 +https://specifications.freedesktop.org/shared-mime-info-spec/latest/
 +
 +https://www.linux.org.ru/forum/development/578330?cid=578951
 +
 ====== Исправление в коде статьи Программирование в X Window средствами Free Pascal. Полищук А. П., Семериков С. А. ====== ====== Исправление в коде статьи Программирование в X Window средствами Free Pascal. Полищук А. П., Семериков С. А. ======
  
Строка 77: Строка 104:
  rEvent: TXEvent;  rEvent: TXEvent;
  nWnd: TWindow;  nWnd: TWindow;
 +atom1, atom2 : TAtom;
  
 begin begin
Строка 96: Строка 124:
  SetWindowManagerHints(prDisplay, PRG_CLASS, argv, argc, nWnd, WND_X, WND_Y, WND_WDT, WND_HGH, WND_MIN_WDT, WND_MIN_HGH, WND_TITLE, WND_ICON_TITLE, 0);  SetWindowManagerHints(prDisplay, PRG_CLASS, argv, argc, nWnd, WND_X, WND_Y, WND_WDT, WND_HGH, WND_MIN_WDT, WND_MIN_HGH, WND_TITLE, WND_ICON_TITLE, 0);
  (* Выбираем события, обрабатываемые программой *)  (* Выбираем события, обрабатываемые программой *)
- XSelectInput(prDisplay, nWnd, ExposureMask OR KeyPressMask);+ XSelectInput(prDisplay, nWnd, ExposureMask OR KeyPressMask OR StructureNotifyMask OR ButtonPressMask);
  (* Показываем окно *)  (* Показываем окно *)
  XMapWindow(prDisplay, nWnd);  XMapWindow(prDisplay, nWnd);
 +
 +(* Добавляем возможность корректного закрытия окна *)
 +atom1 := XInternAtom(prdisplay, 'WM_PROTOCOLS', 0);
 +atom2 := XInternAtom(prdisplay, 'WM_DELETE_WINDOW', 0);
 +XSetWMProtocols(prdisplay, nwnd, @atom2, 1);
  
  (* Цикл получения и обработки событий *)  (* Цикл получения и обработки событий *)
Строка 114: Строка 147:
    XFreeGC (prDisplay, prGC);    XFreeGC (prDisplay, prGC);
 end; end;
 +DestroyNotify,
  KeyPress:  KeyPress:
    begin    begin
Строка 120: Строка 154:
     halt(0);     halt(0);
    end;    end;
 + ClientMessage: begin
 + if((revent.xclient.message_type = atom1) and (revent.xclient.data.l[0] = atom2))
 +      then begin
 +          XDestroyWindow(prdisplay, nwnd);
 +      end;
 +break;
 + end;
 end; end;
  end;  end;
Строка 125: Строка 166:
  
 </code> </code>
 +
 +
 +<html>
 +<!-- Rating@Mail.ru counter -->
 +<script>
 +var _tmr = window._tmr || (window._tmr = []);
 +_tmr.push({id: "2958242", type: "pageView", start: (new Date()).getTime()});
 +(function (d, w, id) {
 +  if (d.getElementById(id)) return;
 +  var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id;
 +  ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js";
 +  var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);};
 +  if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); }
 +})(document, window, "topmailru-code");
 +</script><noscript><div>
 +<img src="//top-fwz1.mail.ru/counter?id=2958242;js=na" style="border:0;position:absolute;left:-9999px;" alt="counter" />
 +</div></noscript>
 +<!-- //Rating@Mail.ru counter -->
 +<!-- Rating@Mail.ru logo -->
 +<a class="footerlink" href="https://top.mail.ru/jump?from=2958242">
 +<img src="//top-fwz1.mail.ru/counter?id=2958242;t=479;l=1" 
 +style="border:0;" height="31" width="88" alt="Рейтинг@Mail.ru" /></a>
 +<!-- //Rating@Mail.ru logo -->
 +</html>
pro_pol/исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а.1546871493.txt.gz · Последнее изменение: 2019/01/07 17:31 — dwadmin

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: GNU Free Documentation License 1.3
GNU Free Documentation License 1.3 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki