Помощь - Поиск - Пользователи - Календарь
Полная версия: Курсор
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
K Y S K A
Как мне в графе сделать курсор и кнопки?
Курсор
Код

0001111000
0011110000
0111100000
1111111111
1111111111
0111100000
0011110000
0001111000

или
Код

0000110000
0001001000
0010000100
0100000010
1111111111
0000110000
0000110000
0000110000

кнопка протой круг
volvo
K Y S K A, с курсором мыши - так:
  msCursorType = ( mcurDefault, mcurPen, mcurBucket, mcurHand );
Const
Cursor : Array[ msCursorType ] Of
Record
HotSpot :
Record
X, Y : Word;
End;
screenMask : Array[ 0 .. 15 ] Of Word;
cursorMask : Array[ 0 .. 15 ] Of Word;
End =
(
(HotSpot : (X : 0; Y : 0);
screenMask : ($3fff, $1fff, $0fff, $07ff, $03ff, $01ff, $00ff, $007f,
$003f, $001f, $01ff, $10ff, $30ff, $f87f, $f87f, $fc3f);
cursorMask : ($0000, $4000, $6000, $7000, $7800, $7c00, $7e00, $7f00,
$7f80, $78c0, $7c00, $4600, $0600, $0300, $0300, $0180)),
(HotSpot : (X : 1; Y : 15);
screenMask : ($ffcf, $ff87, $ff03, $fe01, $fc03, $f807, $f00f, $e01f,
$c03f, $807f, $00ff, $01ff, $03ff, $07ff, $0fff, $9fff);
cursorMask : ($0000, $0030, $0078, $009c, $01e8, $03f0, $07e0, $0fc0,
$1f80, $2700, $7a00, $5c00, $4800, $5000, $6000, $0000)),
(HotSpot : (X : 14; Y : 14);
screenMask : ($ffcf, $ff87, $fe03, $f803, $e001, $c001, $8000, $0000,
$0000, $8000, $8008, $8018, $c078, $c0f8, $c3f8, $e7f8);
cursorMask : ($0000, $0030, $0048, $0188, $0604, $1804, $2002, $7ffe,
$7ffa, $3ff2, $3fe2, $3f82, $1f02, $1c02, $1802, $0000)),
(HotSpot : (X : 4; Y : 0);
screenMask : ($f3ff, $e1ff, $e1ff, $e1ff, $e001, $e000, $e000, $e000,
$8000, $0000, $0000, $0000, $0000, $0000, $8001, $c003);
cursorMask : ($0c00, $1200, $1200, $1200, $13fe, $1249, $1249, $1249,
$7249, $9001, $9001, $9001, $8001, $8001, $4002, $3ffc))
);

Procedure msSetCursor( nCur : msCursorType );
Var Regs : Registers;
Begin
Regs.bx := Word( Cursor[nCur].HotSpot.X );
Regs.cx := Word( Cursor[nCur].HotSpot.Y );
Regs.dx := Ofs( Cursor[nCur].screenMask );
Regs.es := Seg( Cursor[nCur].screenMask );
Regs.ax := 9;
Intr( $33, Regs )
End;


Вызов:
msSetCursor(mcurHand);
{ или }
msSetCursor(mcurDefault);

Только не забудь перед этим инициализировать мышь...

С кнопками там посложнее, я не делал их без ООП никогда, поэтому... Может у кого-нибудь еще есть... unsure.gif
APAL
Может поможет чем - откопал у себя в архиве два модуля для работы с мышой.
(автор наверняка не я, не помню чтоб такое делал... smile.gif )
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.