Game Maker - создание игр | HellRoom Games
Ноябрь 16, 2025, 02:38:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Получение всех разрешений мониторов - DLL  (Прочитано 1610 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SIS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio Master
Сообщений: 8



« : Июль 16, 2025, 16:05:21 »

Не давно начал перенос своего проекта на GMS с GM8.1 в результате понадобилась глубокая работа с дисплеем, получить список всех доступных разрешений для монитора, определение нескольких дисплеев, смена разрешений и частот обновления.
Делюсь своими результатами. Идея проста, раз уж GMS не предоставляет толковый инструментарий и команды для работы со всем выше перечисленным, пришлось делать всё самим, я и мой брочачо Corsar сделали DLL INTDisplayDT и INTDisplaySF которые делают всё то что было необходимо.
INTDisplayDT.dll - Занят вопросами разрешений, определения дисплеев и т.д
INTDisplaySF.dll - Работает на частоты.

Всё это тестировалось и было собственно ориентированно на GMS 1.4.9999 но предполагаю что на новые GM оно пойдёт спокойно ибо тут используются стандартный WinAPI. Не могу ничего сказать по поводу старых версий типа GM 8.x.
Писалось всё на C и компилировалось в MinGW x86 gcc с настройками компилятора:
gcc -shared -o ???.dll ???.c -Wl,--add-stdcall-alias

Где ??? название файла.
В архиве лежит тестовый GMX (Экспортированный .GMZ) - DisplayTemplate, DLL и их не скомпилированные варианты для тех кто хочет это изучить или перекомпилировать, решать вам.
в GMX я попытался всё структурировать и поставил кучу комментариев так что разобраться в работе будет не трудно

https://disk.yandex.ru/d/Zi0m8O4PJPIEYA
Файл прикрепить не получилось так что вот Яндекс диск =/

UPD: Отловил и исправил один баг. Когда при включение Windows если не был подключён ни один монитор но в последствии его подключали, то он получал неправильный индекс и не учитывался в подсчете дисплеев.
« Последнее редактирование: Июль 18, 2025, 17:21:48 от SIS » Записан

-*- Fukker ma brother -*-
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.053 секунд. Запросов: 27.