X11/de

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es)



Dieser Artikel beschäftigt sich mit der Linux / Unix Programmierung.

Das Package X11 enthält einige units mit Umsetzungen der X Header Dateien.

Liste der Units

Die Grundlegenden Units sind:

  • X Grundlegende X Routinen.
  • xcms Farbmanagement.
  • xlib Xlib Werkzeuge.
  • xrender X Render-Erweiterungen.
  • xresource X Ressourcenmanagement.
  • xshm X Shared-Memory-Erweiterung.
  • xutil X util Bibliothek.

Weitere Units sind:

  • cursorfont
  • xinerama
  • xrandr
  • keysym
  • xf86dga.pp
  • xkb
  • xv
  • xf86vmode
  • xkblib
  • xvlib
  • xatom
  • xi

Alle diese Units verlinken zu Zahlreichen X Bibliotheken. Diese Schnittstellen Units zu den Client-Bibliotheken sind dokumentiert und sind somit weitgehend immun gegen die X11 <-> Xorg Veränderungen.

Beispiele

Ein Fenster mit einer Meldung

Dies ist eine sehr einfache Anwendung. Diese Anwendung zeigt ein Fenster mit einer Nachricht.

program xshowwindow;

{$mode objfpc}{$H+}

uses
  xlib,
  x,
  ctypes;

  procedure ModalShowX11Window(AMsg: string);
  var
    d: PDisplay;
    w: TWindow;
    e: TXEvent;
    msg: PChar;
    s: cint;

  begin
    msg := PChar(AMsg);

    // Erstellt die Verbindung zum Server
    d := XOpenDisplay(nil);
    if (d = nil) then
    begin
      WriteLn('[ModalShowX11Window] Kann nicht das Display öffnen');
      exit;
    end;

    s := DefaultScreen(d);

    // Erstellt das Fenster
    w := XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 200, 200,
      1, BlackPixel(d, s), WhitePixel(d, s));

    // Wählt die gewünschten Ereignisse aus
    XSelectInput(d, w, ExposureMask or KeyPressMask or ButtonPressMask);

    // Fenster anzeigen
    XMapWindow(d, w);

    // Ereignisschleife
    while (True) do
    begin
      XNextEvent(d, @e);

      case e._type of
        Expose:
          // Zeichnet ein Rechteck (Quadrat) und gibt einen Text aus
        begin
          XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
          XDrawString(d, w, DefaultGC(d, s), 50, 50, msg, strlen(msg));
        end;
        KeyPress:
          // Beendet das Programm bei Tastendruck
          Break;
        ButtonPress:
          // Beendet das Programm bei einem Mausklick
          Break;
      end;

    end;

    // Schliesst Verbindung zum Server
    XCloseDisplay(d);
  end;

begin
  ModalShowX11Window('Meine Nachricht');
end.

Siehe auch