Хорошо! Хорошо!:  0
Плохо! Плохо!:  0
Показано с 1 по 1 из 1

Тема: Screen

  1. #1

    По умолчанию Screen

    Код:
    #===============================================================================
    # Screen
    # Модуль содержит методы для работы с экраном компьютера и главным окном программы
    #===============================================================================
    module Screen
      #-----------------------------------------------------------------------------
      # Возвращает дескриптор игрового окна
      # Возвращает: handle
      #-----------------------------------------------------------------------------
      def self.game_window
        return WinAPI::FindWindowEx.call(0, 0, "RGSS Player", 0)
      end
      #-----------------------------------------------------------------------------
      # Возваращает ширину экрана
      # Возваращает :integer
      #-----------------------------------------------------------------------------
      def self.width
        return WinAPI::GetSystemMetrics.call(0)
      end
      #-----------------------------------------------------------------------------
      # Возваращает высоту экрана
      # Возваращает :integer
      #-----------------------------------------------------------------------------
      def self.height
        return WinAPI::GetSystemMetrics.call(1)
      end
      #-----------------------------------------------------------------------------
      # Возваращает параметры заданного окна в виде прямоугольника
      # Возваращает :rect
      # window :handle - дескриптор нужного окна
      #-----------------------------------------------------------------------------
      def self.window_rect(window = game_window)
        string = ' ' * 44
        WinAPI::GetWindowPlacement.call(window, string)
        info = string.unpack('L11')
        result = Rect.new(info[7], info[8], info[9] - info[7], info[10] - info[8])
        return result
      end
      #-----------------------------------------------------------------------------
      # Возвращает окно к первоначальному виду (стандартному для Maker XP)
      #-----------------------------------------------------------------------------
      def self.default
        WinAPI::MoveWindow.call(game_window, (width - 646) / 2, (height - 525) / 2, 646, 525, 1)
      end
      #-----------------------------------------------------------------------------
      # Метод перемещает окно игры в заданные координаты
      # x :integer - новая координата 'x' окна
      # y :integer - новая координата 'y' окна
      #-----------------------------------------------------------------------------
      def self.move(x, y, window = game_window)
        w = window_rect(window).width
        h = window_rect(window).height
        WinAPI::MoveWindow.call(window, x, y, w, h, 1)
      end
      #-----------------------------------------------------------------------------
      # Метод выравнивает окно по центру экрана
      #-----------------------------------------------------------------------------
      def self.center(window = game_window)
        w = window_rect(window).width
        h = window_rect(window).width
        WinAPI::MoveWindow.call(game_window,(width - w) / 2,(height - h) / 2, w, h, 1)
      end
      #-----------------------------------------------------------------------------
      # Метод изменяет разрешение окна игры и перемещает его в заданные координаты
      # rect   :rect - прямоугольник с новыми параметрами окна
      # center :boolean - будет ли окно выравнено по центру экрана
      # window :handle - дескриптор окна
      #-----------------------------------------------------------------------------
      def self.resize(rect, center = true, window = game_window)
        rect.width += 6
        rect.height += 25
        if center
          WinAPI::MoveWindow.call(window, (width - rect.width) / 2,(height - rect.height) / 2, rect.width, rect.height, 1)
        else
          WinAPI::MoveWindow.call(window, rect.x, rect.y, rect.width, rect.height, 1)
        end
      end
      #-----------------------------------------------------------------------------  
    end
    #===============================================================================
    Последний раз редактировалось Equilibrium Keeper; 16.07.2011 в 12:03.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Screen