Код:#=============================================================================== # 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 #===============================================================================
Социальные закладки