⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mouse.inc

📁 著名的游戏开发库Allegro4.2.0 for DELPHI
💻 INC
字号:
{*         ______   ___    ___
 *        /\  _  \ /\_ \  /\_ \
 *        \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___
 *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\
 *          \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \
 *           \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
 *            \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
 *                                           /\____/
 *                                           \_/__/
 *
 *      Mouse routines.
 *
 *      By Shawn Hargreaves.
 *
 *      See readme.txt for copyright information.
 *}
{$IFDEF ALLEGRO_INTERFACE}
const
  MOUSEDRV_AUTODETECT  = -1;
  MOUSEDRV_NONE        = 0;

type
  P_MOUSE_DRIVER = ^MOUSE_DRIVER;
  MOUSE_DRIVER = record
    id                     : sint32;
    name                   : PChar;
    desc                   : PChar;
    ascii_name             : PChar;
    init                   : function: sint32; cdecl;
    exit                   : procedure; cdecl;
    poll                   : procedure; cdecl;
    timer_poll             : procedure; cdecl;
    position               : procedure(x, y: sint32); cdecl;
    set_range              : procedure(x1, y1, x2, y2: sint32); cdecl;
    set_speed              : procedure(xspeed, yspeed: sint32); cdecl;
    get_mickeys            : procedure(var mickeyx, mickeyy: sint32); cdecl;
    analyse_data           : function(const buffer: PChar; size: sint32): sint32; cdecl;
    enable_hardware_cursor : procedure(mode: sint32); cdecl;
    select_system_cursor   : function(cursor: sint32): sint32; cdecl;
  end;

var
  the_mousedrv_none        : P_MOUSE_DRIVER;
  the_mouse_driver         : P_MOUSE_DRIVER;
  _mouse_driver_list       : P_DRIVER_INFO;

  install_mouse            : function: sint32; cdecl;
  remove_mouse             : procedure; cdecl;

  poll_mouse               : function: sint32; cdecl;
  mouse_needs_poll         : function: sint32; cdecl;

  enable_hardware_cursor   : procedure; cdecl;
  disable_hardware_cursor  : procedure; cdecl;

const
// Mouse cursors
  MOUSE_CURSOR_NONE       = 0;
  MOUSE_CURSOR_ALLEGRO    = 1;
  MOUSE_CURSOR_ARROW      = 2;
  MOUSE_CURSOR_BUSY       = 3;
  MOUSE_CURSOR_QUESTION   = 4;
  MOUSE_CURSOR_EDIT       = 5;
  NUM_MOUSE_CURSORS       = 6;

var
  mouse_sprite            : ^p_BITMAP;
  mouse_x_focus           : ^sint32;
  mouse_y_focus           : ^sint32;

  mouse_x                 : ^sint32;
  mouse_y                 : ^sint32;
  mouse_z                 : ^sint32;
  mouse_b                 : ^sint32;
  mouse_pos               : ^sint32;

  freeze_mouse_flag       : ^sint32;

const
  MOUSE_FLAG_MOVE            = 1;
  MOUSE_FLAG_LEFT_DOWN       = 2;
  MOUSE_FLAG_LEFT_UP         = 4;
  MOUSE_FLAG_RIGHT_DOWN      = 8;
  MOUSE_FLAG_RIGHT_UP        = 16;
  MOUSE_FLAG_MIDDLE_DOWN     = 32;
  MOUSE_FLAG_MIDDLE_UP       = 64;
  MOUSE_FLAG_MOVE_Z          = 128;

type
  mouse_callback_ptr = procedure(flags: sint32); cdecl;

var
  mouse_callback          : ^mouse_callback_ptr;

  show_mouse              : procedure(bmp: p_BITMAP); cdecl;
  scare_mouse             : procedure; cdecl;
  scare_mouse_area        : procedure(x, y, w, h: sint32); cdecl;
  unscare_mouse           : procedure; cdecl;
  position_mouse          : procedure(x, y: sint32); cdecl;
  position_mouse_z        : procedure(z: sint32); cdecl;
  set_mouse_range         : procedure(x1, y1, x2, y2: sint32); cdecl;
  set_mouse_speed         : procedure(xspeed, yspeed: sint32); cdecl;
  select_mouse_cursor     : procedure(cursor: sint32); cdecl;
  set_mouse_cursor_bitmap : procedure(cursor: sint32; bmp: p_BITMAP); cdecl;
  set_mouse_sprite_focus  : procedure(x, y: sint32); cdecl;
  get_mouse_mickeys       : procedure(var mickeyx, mickeyy: sint32); cdecl;
  set_mouse_sprite        : procedure(sprite: p_BITMAP); cdecl;
  show_os_cursor          : function(cursor: sint32): sint32; cdecl;
{$ENDIF ALLEGRO_INTERFACE}
{$IFDEF ALLEGRO_IMPLEMENTATION}
{$ENDIF ALLEGRO_IMPLEMENTATION}
{$IFDEF ALLEGRO_LOADVARIABLE}
  the_mousedrv_none       := LoadDLL('mousedrv_none');
  the_mouse_driver        := LoadDLL('mouse_driver');
  _mouse_driver_list      := LoadDLL('_mouse_driver_list');

  install_mouse           := LoadDLL('install_mouse');
  remove_mouse            := LoadDLL('remove_mouse');

  poll_mouse              := LoadDLL('poll_mouse');
  mouse_needs_poll        := LoadDLL('mouse_needs_poll');

  enable_hardware_cursor  := LoadDLL('enable_hardware_cursor');
  disable_hardware_cursor := LoadDLL('disable_hardware_cursor');

  mouse_sprite            := LoadDLL('mouse_sprite');
  mouse_x_focus           := LoadDLL('mouse_x_focus');
  mouse_y_focus           := LoadDLL('mouse_y_focus');

  mouse_x                 := LoadDLL('mouse_x');
  mouse_y                 := LoadDLL('mouse_y');
  mouse_z                 := LoadDLL('mouse_z');
  mouse_b                 := LoadDLL('mouse_b');
  mouse_pos               := LoadDLL('mouse_pos');

  freeze_mouse_flag       := LoadDLL('freeze_mouse_flag');
  mouse_callback          := LoadDLL('mouse_callback');

  show_mouse              := LoadDLL('show_mouse');
  scare_mouse             := LoadDLL('scare_mouse');
  scare_mouse_area        := LoadDLL('scare_mouse_area');
  unscare_mouse           := LoadDLL('unscare_mouse');
  position_mouse          := LoadDLL('position_mouse');
  position_mouse_z        := LoadDLL('position_mouse_z');
  set_mouse_range         := LoadDLL('set_mouse_range');
  set_mouse_speed         := LoadDLL('set_mouse_speed');
  select_mouse_cursor     := LoadDLL('select_mouse_cursor');
  set_mouse_cursor_bitmap := LoadDLL('set_mouse_cursor_bitmap');
  set_mouse_sprite_focus  := LoadDLL('set_mouse_sprite_focus');
  get_mouse_mickeys       := LoadDLL('get_mouse_mickeys');
  set_mouse_sprite        := LoadDLL('set_mouse_sprite');
  show_os_cursor          := LoadDLL('show_os_cursor');
{$ENDIF ALLEGRO_LOADVARIABLE}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -