PS : интересует возможность написания screenmate для Linux, про amor я знаю
Аналог SetShape в X Window System
Модератор: Модераторы
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
Аналог SetShape в X Window System
Как не прибегая к помощи gtk и qt установить "нужную форму" окна.
PS : интересует возможность написания screenmate для Linux, про amor я знаю
PS : интересует возможность написания screenmate для Linux, про amor я знаю
Ты хочешь создать окно с графикой в котором вместо системного курсора будет что-то другое? Если я правильно понял задачу, то тогда нужно создать окно средствами модуля sdl а затем отключить отображение курсора

Код: Выделить всё
SDL_ShowCursor(0);Зато я такую библиотеку не знаюпро amor я знаю
Вот здесь есть пример как это делать (правда на сишке):
http://cvsweb.xfree86.org/cvsweb/contri ... ams/xeyes/
используеться расширение Хсервера shape. Вот доки по АПИ расширения:
http://www.xfree86.org/current/shapelib.html
http://cvsweb.xfree86.org/cvsweb/contri ... ams/xeyes/
используеться расширение Хсервера shape. Вот доки по АПИ расширения:
http://www.xfree86.org/current/shapelib.html
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
Заголовочные файлы для fpc есть?
Или подскажите как описать структуру Region для функции
в Xutil.h , в Xregion.h
эт оно
BOX вот эта запись
Получаем
???
PS
Простые типы данных http://js6.narod.ru/delphi/asked_types_of_data.htm
Или подскажите как описать структуру Region для функции
Код: Выделить всё
extern void XShapeCombineRegion (
Display* /* display */,
Window /* dest */,
int /* dest_kind */,
int /* x_off */,
int /* y_off */,
Region /* region */,
int /* op */
);в Xutil.h
Код: Выделить всё
typedef struct _XRegion *Region;Код: Выделить всё
typedef struct _XRegion {
long size;
long numRects;
BOX *rects;
BOX extents;
} REGION;эт оно
BOX вот эта запись
Код: Выделить всё
typedef struct {
short x1, x2, y1, y2;
} Box, BOX, BoxRec, *BoxPtr;Получаем
Код: Выделить всё
PBox=^Tbox;
TBox=record
x1:Smalltlnt;
x2:Smalltlnt;
y1:Smalltlnt;
y2"Smalltlnt;
end;Код: Выделить всё
TRegion=record
size:Longint;
numRects:Longint;
rects:PBox;
extents:TBox;
end;???
PS
Простые типы данных http://js6.narod.ru/delphi/asked_types_of_data.htm
В С и C++ для целых значений определены типы int, short int (или просто short) и long int (или просто long). Тип int из C/C++ соответствует типу Integer из Delphi, a long из C/C++ — Longint из Delphi. Однако Shortint из C/C++ соответствует в Delphi не Shortint, a Smalltlnt. Эквивалент Shortint из Delphi в C/C++— это signed char. Тип unsigned char в C/C++ соответствует типу Byte из Delphi. В C/C++ существует еще тип unsigned long, аналога которому в Delphi нет.
В первом приближении ошибок в описании не видно.
Если есть сомнения по Си типам, пользуйтесь модулем ctypes.
Если есть сомнения по Си типам, пользуйтесь модулем ctypes.
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
Буду пробывать ...
Добавлено спустя 29 минут 24 секунды:
(C) unsigned int => (ctypes) cunsigned ?
Добавлено спустя 4 минуты 22 секунды:
И чем заменять?
Добавлено спустя 29 минут 24 секунды:
(C) unsigned int => (ctypes) cunsigned ?
Добавлено спустя 4 минуты 22 секунды:
Код: Выделить всё
unsigned long, аналога которому в Delphi нет. И чем заменять?
Угу или cuint.
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
(C) unsigned long => (Ctypes) ???
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
LongWord = Cardinal = culong
На счёт ссылки не понял. Причём это?
На счёт ссылки не понял. Причём это?
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
На счёт ссылки не понял. Причём это?
В C/C++ существует еще тип unsigned long, аналога которому в Delphi нет.
LongWord in Delphi or unsigned long in C++
И кто врет ? Думаю первый источник
Код: Выделить всё
#define ShapeNotifyMask (1L << 0)
#define ShapeNotify 0
#define ShapeNumberEvents (ShapeNotify + 1)Что за 1L<<0 => $FFFFFFFF
нет.
1 shl 0 = 1
1 shl 0 = 1
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
Вот что получилось
PS : Time в С как объявлен?
Код: Выделить всё
unit xshape;
interface
uses
ctypes,x,xlib;
{$IFDEF FPC}
{$PACKRECORDS C}
{$ENDIF}
{type
XShapeEvent = record
_type : longint;
serial : dword;
send_event : CBool;
display : ^Display;
window : TWindow;
kind : longint;
x : longint;
y : longint;
width : dword;
height : dword;
time : Time;
shaped : cBool;
end;}
type
TBox=record
x1:SmallInt;
x2:SmallInt;
y1:SmallInt;
y2:SmallInt;
end;
PBox=^Tbox;
TRegion=record
size:Longint;
numRects:Longint;
rects:PBox;
extents:TBox;
end;
const
LibXShape='libXext.so';
SHAPE_MAJOR_VERSION = 1; //current version numbers
SHAPE_MINOR_VERSION = 1;
ShapeSet = 0;
ShapeUnion = 1;
ShapeIntersect = 2;
ShapeSubtract = 3;
ShapeInvert = 4;
ShapeBounding = 0;
ShapeClip = 1;
ShapeInput = 2;
ShapeNotifyMask =(1 shl 0);
ShapeNotify = 0;
ShapeNumberEvents = (ShapeNotify + 1);
function XShapeQueryExtension (
Display : PDisplay;
event_base : longint;
error_base : longint
):cBool;cdecl;external LibXShape;
function XShapeQueryVersion (
display : PDisplay;
major_version :longint;
minor_version :longint
):TStatus;cdecl;external LibXShape;
procedure XShapeCombineRegion (
display : PDisplay;
dest :TWindow;
dest_kind:longint;
x_off:longint;
y_off:longint;
ShapeRegion:TRegion;
op:longint
);cdecl;external LibXShape;
procedure XShapeCombineRectangles (
display:PDisplay;
dest:TWindow;
dest_kind:longint;
x_off:longint;
y_off:longint;
rectangles:TXRectangle;
n_rects:longint;
op:longint;
ordering:longint
);cdecl;external LibXShape;
procedure XShapeCombineMask (
display:PDisplay;
dest:TWindow;
dest_kind:longint;
x_off:longint;
y_off:longint;
src:TPixmap;
op:longint
);cdecl;external LibXShape;
procedure XShapeCombineShape (
display:PDisplay;
dest:TWindow;
dest_kind:longint;
x_off:longint;
y_off:longint;
src:TWindow;
src_kind:longint;
op:longint
);cdecl;external LibXShape;
procedure XShapeOffsetShape (
display:PDisplay;
dest:TWindow;
dest_kind:longint;
x_off:longint;
y_off:longint
);cdecl;external LibXShape;
function XShapeQueryExtents (
display:PDisplay;
window:TWindow;
bounding_shaped:cBool;
x_bounding:longint;
y_bounding:longint;
w_bounding:cunsigned;
h_bounding:cunsigned;
clip_shaped:cBool;
x_clip:longint;
y_clip:longint;
w_clip:cunsigned;
h_clip:cunsigned
):TStatus;cdecl;external LibXShape;
procedure XShapeSelectInput (
display:PDisplay;
window:TWindow;
mask:culong
);cdecl;external LibXShape;
function XShapeInputSelected (
display:PDisplay;
window:TWindow
):dword;cdecl;external LibXShape;
function XShapeGetRectangles (
display:PDisplay;
window:TWindow;
kind:longint;
count:longint;
ordering:longint
):PXRectangle;cdecl;external LibXShape;
implementation
end.PS : Time в С как объявлен?
time_t?
если он то как Integer
если он то как Integer
