设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2206|回复: 2
打印 上一主题 下一主题

[已经过期] 鼠标系统如何隐藏电脑默认鼠标?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2011-8-21
帖子
51
跳转到指定楼层
1
发表于 2012-5-17 20:42:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 受pia专用ID 于 2012-5-18 08:35 编辑

自己设计鼠标图形后运行,发现想要的图形显示了,但电脑默认的鼠标盖在上面。怎么隐藏电脑默认鼠标?

以下是我使用的鼠标脚本。
#==============================================================================
# ** 鼠标输入模块
#------------------------------------------------------------------------------
#   微调 by zh99998
#   版本 1.2a
#   06-30-2010
#   修复press判定
#   基于沉影的鼠标系统修改版alpha
#------------------------------------------------------------------------------
#   by DerVVulfman
#   版本 1.2
#   08-18-2007
#------------------------------------------------------------------------------
#   建立在鼠标输入模块...
#
#   by Near Fantastica
#------------------------------------------------------------------------------
#   Set_Pos feature by
#   Freakboy
#------------------------------------------------------------------------------
#
#   CALLS:
#
#   Mouse.click? (1左、2右、3中)
#   判断鼠标是否真的按下(Ture/False).
#   这个值控制您按下的是左/右键,还是中键

#
#   Mouse.press?(1左、2右、3中)
#   判断鼠标是否真的按下/保持按下状态
#   这个值控制您按下的是左/右键,还是中键
#   Mouse.pixels
#   Mouse.pixels
#   这个值返回鼠标所在的坐标(640*480大小),如果鼠标超出游戏画面,这个值为[nil, nil]
#
#   Mouse.tiles
#   This returns  the mouse's screen  coordinates  in map tiles.   Based on the
#   system's 20x15 tile size,  this returns it in index values  (a 0-19 width &
#   a 0-14 height).  This functions the same manner as Mouse.pixels.
#
#   Mouse.set_pos
#   This allows you  to forcefully position the mouse at an x/y position within
#   the game screen by pixel coordinates.  Given the game's normal screen width
#   of 640x480, adding:  Mouse.set_pos(320,240)  should position the mouse dead
#   center of the gaming window.
#
#   Mouse.update
#   Add this routine  into your update routines  to update  the mouse position.
#   It must be called otherwise you won't get valid mouse coordinates.
#
#==============================================================================

module Mouse
  #--------------------------------------------------------------------------
  # ## 常量
  #--------------------------------------------------------------------------
  GetAsyncKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
  GetKeyState = Win32API.new("user32","GetKeyState",['i'],'i')
  
  ScreenToClient = Win32API.new('user32', 'ScreenToClient', 'lp', 'i')
  
  GetCursorPos = Win32API.new('user32', 'GetCursorPos', 'p', 'i')
  GetClientRect = Win32API.new('user32', 'GetClientRect', 'lp', 'i')
  
  #--------------------------------------------------------------------------
  # * Mouse Click
  #     button      : button
  #--------------------------------------------------------------------------
  def Mouse.click?(button)
    return false if button == 1 and !$click_abled
    return true if @keys.include?(button)
    return false
  end  
  #--------------------------------------------------------------------------
  # * Mouse Pressed
  #     button      : button
  #--------------------------------------------------------------------------
  def Mouse.press?(button)
    return true if @press.include?(button)
    return false
  end
  #--------------------------------------------------------------------------
  # * Mouse Pressed
  #     button      : button
  #--------------------------------------------------------------------------
  def Mouse.area?(x, y, width=32, height=32)
    return false if @pos == nil
    return true if @pos[0] >= x and @pos[0] <= (x+width) and @pos[1] >= y and @pos[1] <= (y+height)
    return false
  end
  #--------------------------------------------------------------------------
  # * Mouse Pixel Position
  #--------------------------------------------------------------------------
  def Mouse.pixels
    return @pos == nil ? [nil, nil] : @pos
  end
  #--------------------------------------------------------------------------
  # * Mouse Tile Position
  #--------------------------------------------------------------------------
  def Mouse.tiles
    return nil if @pos == nil
    x = @pos[0] / 32
    y = @pos[1] / 32
    return [x, y]
  end
  #--------------------------------------------------------------------------
  # * Set Mouse Position
  #--------------------------------------------------------------------------
  def Mouse.set_pos(x_pos=0, y_pos=0)
    width, height = Mouse.client_size
    if (x_pos.between?(0, width) && y_pos.between?(0, height))
      x = Mouse.client_pos[0] + x_pos; y = Mouse.client_pos[1] + y_pos
      Win32API.new('user32', 'SetCursorPos', 'NN', 'N').call(x, y)
    end
  end
  #--------------------------------------------------------------------------
  # * Mouse Update
  #--------------------------------------------------------------------------
  def Mouse.update
    @pos            = Mouse.pos
    @keys, @press   = [], []
    @keys.push(1)   if GetAsyncKeyState.call(1) & 0X01 == 1
    @keys.push(2)   if GetAsyncKeyState.call(2) & 0X01 == 1
    @keys.push(3)   if GetAsyncKeyState.call(4) & 0X01 == 1
    @press.push(1)  if GetKeyState.call(1) > 1
    @press.push(2)  if GetKeyState.call(2) > 1
    @press.push(3)  if GetKeyState.call(4) > 1
    ## 鼠标双击
    @wait ||= 0
    @wait += 1 if @key != nil
    (@key = nil; @wait = 0) if @wait > 30 # 双击时间
  end  
  #--------------------------------------------------------------------------
  # * Automatic functions below
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  # * Obtain Mouse position in screen
  #--------------------------------------------------------------------------
  def Mouse.global_pos
    pos = [0, 0].pack('ll')
    if GetCursorPos.call(pos) != 0
      return pos.unpack('ll')
    else
      return nil
    end
  end
  #--------------------------------------------------------------------------
  # * Return Screen mouse position within game window
  #--------------------------------------------------------------------------
  def Mouse.pos
    x, y = Mouse.screen_to_client(*Mouse.global_pos)
    width, height = Mouse.client_size
    begin
      if (x >= 0 and y >= 0 and x < width and y < height)
        return x, y
      else
        return nil
      end
    rescue
      return nil
    end
  end
  #--------------------------------------------------------------------------
  #  * Pass Screen to Game System
  #--------------------------------------------------------------------------
  def Mouse.screen_to_client(x, y)
    return nil unless x and y
    pos = [x, y].pack('ll')
    if ScreenToClient.call(HWND, pos) != 0
      return pos.unpack('ll')
    else
      return nil
    end
  end
  #--------------------------------------------------------------------------
  # * Get Game Window Size
  #--------------------------------------------------------------------------
  def Mouse.client_size
    rect = [0, 0, 0, 0].pack('l4')
    GetClientRect.call(HWND, rect)
    right, bottom = rect.unpack('l4')[2..3]
    return right, bottom
  end
  #--------------------------------------------------------------------------
  # * Get Window Position
  #--------------------------------------------------------------------------
  def Mouse.client_pos
    rect = [0, 0, 0, 0].pack('l4')
    ## 用户区
    GetClientRect.call(HWND, rect)
    left, upper = rect.unpack('l4')[0..1]
    return left, upper
  end
  #--------------------------------------------------------------------------
  # ## 句柄
  #--------------------------------------------------------------------------
  def Mouse.get_hwnd
    game_name = "\0" * 256
    Win32API.new('kernel32', 'GetPrivateProfileStringA', 'pppplp', 'l').call('Game','Title','',game_name,255,".\\Game.ini")
    game_name.delete!("\0")
    return Win32API.new('user32', 'FindWindowA', 'pp', 'l').call('RGSS Player',game_name)
  end
  #--------------------------------------------------------------------------
  # ## 双击
  #--------------------------------------------------------------------------
  def self.double_click?(key)
    if @keys.include?(key)
      @key !=key ? (@key = key; return false) : (@key = nil; return true)
    end
  end
  ## 句柄常量
  HWND = Mouse.get_hwnd
  
  ###############
  GetMessage = Win32API.new('user32','GetMessage','plll','l')
  
  Point = Struct.new(:x, :y)
  Message = Struct.new(:message, :wparam, :lparam, :pt)
  Param = Struct.new(:x, :y, :scroll)
  
  def self.scroll
    msg = "\0"*32
    GetMessage.call(msg,0,0,0)
    r = wmcallback(unpack_msg(msg))
    return r unless r.nil?
  end
  
  def wmcallback(msg)
    return unless msg.message == Scroll
    param = Param.new
    param.x = word2signed_short(loword(msg.lparam))
    param.y = word2signed_short(hiword(msg.lparam))
    param.scroll = word2signed_short(hiword(msg.wparam))
    return [param.x,param.y,param.scroll]
  end
  
  def hiword(dword)
    ###return ((dword&0xffff0000)>>16)&0x0000ffff
    return (dword & 0xffff0000) / 0x10000
  end
  
  def loword(dword)
    return dword&0x0000ffff
  end
end

Lv1.梦旅人

梦石
0
星屑
155
在线时间
20 小时
注册时间
2012-1-1
帖子
22
2
发表于 2013-3-3 17:58:18 | 只看该作者
哈哈,在这里刷经验,P叔肯定不知道

点评

坑爹- -  发表于 2013-3-4 12:40
你被多人举报了。算了,还有挖坟没注意,按道理应该扣15分的,这里先教育了,下次别挖坟,别纯水。  发表于 2013-3-3 19:12
自重。  发表于 2013-3-3 18:07

评分

参与人数 1星屑 -5 收起 理由
怪蜀黍 -5 谁说P叔不知道?-10分对新人处罚减半.

查看全部评分

.
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
144 小时
注册时间
2012-12-16
帖子
54
3
发表于 2013-3-3 18:01:29 | 只看该作者
楼主的图名字有没有改成“pointer”

鼠标名Pointer.jpg (22.58 KB, 下载次数: 10)

鼠标名Pointer.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-24 09:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表