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

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


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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
pro_pol:исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а [2021/07/10 22:10] dwadminpro_pol:исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а [2022/02/16 20:40] (текущий) dwadmin
Строка 23: Строка 23:
  
 https://specifications.freedesktop.org/shared-mime-info-spec/latest/ 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. Полищук А. П., Семериков С. А. ======
Строка 102: Строка 104:
  rEvent: TXEvent;  rEvent: TXEvent;
  nWnd: TWindow;  nWnd: TWindow;
 +atom1, atom2 : TAtom;
  
 begin begin
Строка 121: Строка 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);
  
  (* Цикл получения и обработки событий *)  (* Цикл получения и обработки событий *)
Строка 139: Строка 147:
    XFreeGC (prDisplay, prGC);    XFreeGC (prDisplay, prGC);
 end; end;
 +DestroyNotify,
  KeyPress:  KeyPress:
    begin    begin
Строка 145: Строка 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;
pro_pol/исправление_в_коде_статьи_программирование_в_x_window_средствами_free_pascal._полищук_а._п._семериков_с._а.txt · Последнее изменение: 2022/02/16 20:40 — dwadmin

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