procedure SetWindowManagerHints(
prDisplay: PDisplay;
psPrgClass: PChar;
argv: PPChar;
argc: integer;
nWnd: TWindow;
x,
y,
nWidth,
nHeight,
nMinWidth,
nMinHeight:integer;
psTitle: PChar;
psIconTitle: PChar;
nIconPixmap: TPixmap
);
var
rSizeHints: TXSizeHints;
rWMHints: TXWMHints;
rClassHint: TXClassHint;
prWindowName, prIconName: TXTextProperty;
begin
if (XStringListToTextProperty(@psTitle, 1, @prWindowName)=0) or
(XStringListToTextProperty(@psIconTitle, 1, @prIconName)=0) then
begin
writeln('No memory!');
halt(1);
end;
rSizeHints.flags:= PPosition OR PSize OR PMinSize;
rSizeHints.min_width:= nMinWidth;
rSizeHints.min_height:= nMinHeight;
rWMHints.flags:= StateHint OR IconPixmapHint OR InputHint;
rWMHints.initial_state:= NormalState;
rWMHints.input:= True;
rWMHints.icon_pixmap:= nIconPixmap;
rClassHint.res_name:= argv[0];
rClassHint.res_class:= psPrgClass;
XSetWMProperties(prDisplay, nWnd, @prWindowName, @prIconName, argv, argc, @rSizeHints, @rWMHints, @rClassHint);
end;
var
prDisplay: PDisplay; (* Указатель на структуру Display *)
nScreenNum: integer;
prGC: TGC;
rEvent: TXEvent;
nWnd: TWindow;
begin
prDisplay:= XOpenDisplay(nil);
if prDisplay = nil then begin
writeln('Can not connect to the X server!');
halt (1);
end;
nScreenNum:= XDefaultScreen(prDisplay);
nWnd:= XCreateSimpleWindow(prDisplay, XRootWindow (prDisplay, nScreenNum), WND_X, WND_Y, WND_WDT, WND_HGH, WND_BORDER_WDT, XBlackPixel (prDisplay, nScreenNum),
XWhitePixel (prDisplay, nScreenNum));
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);
XMapWindow(prDisplay, nWnd);
while (true) do begin
XNextEvent(prDisplay, @rEvent);