Работа с ресурсами для оптимизации MapInfo: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 23: Строка 23:
'''FONT 8, "Helv"''' - объявление стиля и размера используемого в диалоге шрифта
'''FONT 8, "Helv"''' - объявление стиля и размера используемого в диалоге шрифта


Далее следуют объявления компонентов диалога: статической строки, списка и кнопок. Большинство их атрибутов интуитивно понятны и могут быть изменены на своё усмотрение. Единственное, что не стоит менять, так это номер исполняемого действия для элемента. В вышеуказанном диалоге для кнопки "Закрыть" этот номер равен 1, для кнопки "Отмена" - 2, а для кнопки вызова справки - 5. В случае изменения данного атрибута элемент диалога будет выполнять не те действия, которые для него были прописаны. Все остальные атрибуты возможно изменять как путём перемещения и растягивания оных с помощью мышки, так и задавая точные необходимые значения. Например, если необходимо будет поменять размер и сдвинуть какие-то кнопки, то проще это сделать путём редактирования координат и размеров, представленных в числовом виде. При этом необходимо обязательно в конце редактирования нажимать клавишу F5 для компиляции ресурса, чтобы изменения сразу вступили в силу и их можно было увидеть. В случае изменения объектов мышкой нажимать каждый раз F5 необязательно, однако, это всё равно потребуется в конце всех операций. В конечном итоге может получиться подобный результат:
Далее следуют объявления компонентов диалога: статической строки, списка и кнопок. Большинство их атрибутов интуитивно понятны и могут быть изменены на своё усмотрение. Единственное, что не стоит менять, так это номер исполняемого действия для элемента. В вышеуказанном диалоге для кнопки "Закрыть" этот номер равен 1, для кнопки "Отмена" - 2, а для кнопки вызова справки - 5. В случае изменения данного атрибута элемент диалога будет выполнять не те действия, которые для него были прописаны. Все остальные атрибуты возможно изменять как путём перемещения и растягивания оных с помощью мышки, так и задавая точные необходимые значения. Например, если необходимо будет поменять размер и сдвинуть какие-то кнопки, то проще это сделать путём редактирования координат и размеров, представленных в числовом виде. При этом необходимо в конце редактирования нажимать клавишу F5 для компиляции ресурса, чтобы изменения сразу вступили в силу и их можно было увидеть. В случае изменения объектов мышкой нажимать каждый раз F5 необязательно, однако, это всё равно потребуется в конце всех операций. В конечном итоге может получиться подобный результат:


[[Файл:Resources2.jpg|200px|thumb|center|Подправленный диалог в MapInfo]]
[[Файл:Resources2.jpg|200px|thumb|center|Подправленный диалог в MapInfo]]
Строка 31: Строка 31:
== Работа с динамическими элементами диалога ==
== Работа с динамическими элементами диалога ==


В диалогах MapInfo не все элементы являются статическими. Но некоторые элементы подгружаются посредством программного кода.
В диалогах MapInfo не все элементы являются статическими. Некоторые элементы подгружаются посредством программного кода. Самый яркий пример - окно регистрации растра, которое является маленьким и крайне неудобным.
 
[[Файл:Resources3.jpg|200px|thumb|center|Окно регистрации растра]]
 
Чтобы его расширить


{{Статья|Черновик}}
{{Статья|Черновик}}

Версия от 11:53, 27 декабря 2016

В этой заметке будет описан способ редактирования диалоговых окон, текстовых объектов и других объектов интерфейса, находящиеся в ресурсах динамических библиотек, подгружаемых MapInfo.

Для работы потребуется утилита Resource Hacker, которая является бесплатной и не требует установки.

Работа с диалоговыми окнами

Диалоговые окна в MapInfo - тема довольно интересная. Связано это с тем, что диалоговые окна по большей части являются статическими: их невозможно ни развернуть, ни растянуть, ни запомнить их последующее положение. Практически все окна в MapInfo небольшие по своему. Возможно, это связано с тем, чтобы окна полностью уменьшались на экране монитора даже на самом низком разрешении. Однако, с развитием технологий и увеличением разрешения экрана, размер окон остался неизменным и всё таким же неудобным. Но существуют возможности исправить эти недочёты, о чём и будет сказано в этом разделе.

После распаковки и запуска программы Resource Hacker, открываем файл mires.dll, находящийся в корневой директории с MapInfo. Для примера написания данной статьи взята последняя 32-х битная версия MapInfo, а именно 15.0. Но файл mires.dll принципиально ничем не отличается, поэтому информация будет также актуальной и для старых версий MapInfo.

После того, как файл mires.dll будет открыт, необходимо перейти в директорию Dialog. Далее, для примера, поработаем с окном "Закрыть таблицу". Для того, чтобы быстро найти нужный диалог и вдобавок узнать номер ресурса, можно воспользоваться поиском. Диалог и его описание выглядят так:

Диалог "Закрыть таблицу"

2520 DIALOG 21, 30, 203, 98 - здесь следует объявление номера ресурса, а также начальные координаты появления окна на экране и размеры окна.

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU - объявление стилей согласно Win 32 API. Некоторые из них будут рассмотрены далее, но полное их описание можно почитать на сайте MSDN

CAPTION "Закрыть таблицу" - Заголовок окна

LANGUAGE LANG_RUSSIAN, 0x0 - объявление используемого языка ресурса. В изменении нет необходимости

FONT 8, "Helv" - объявление стиля и размера используемого в диалоге шрифта

Далее следуют объявления компонентов диалога: статической строки, списка и кнопок. Большинство их атрибутов интуитивно понятны и могут быть изменены на своё усмотрение. Единственное, что не стоит менять, так это номер исполняемого действия для элемента. В вышеуказанном диалоге для кнопки "Закрыть" этот номер равен 1, для кнопки "Отмена" - 2, а для кнопки вызова справки - 5. В случае изменения данного атрибута элемент диалога будет выполнять не те действия, которые для него были прописаны. Все остальные атрибуты возможно изменять как путём перемещения и растягивания оных с помощью мышки, так и задавая точные необходимые значения. Например, если необходимо будет поменять размер и сдвинуть какие-то кнопки, то проще это сделать путём редактирования координат и размеров, представленных в числовом виде. При этом необходимо в конце редактирования нажимать клавишу F5 для компиляции ресурса, чтобы изменения сразу вступили в силу и их можно было увидеть. В случае изменения объектов мышкой нажимать каждый раз F5 необязательно, однако, это всё равно потребуется в конце всех операций. В конечном итоге может получиться подобный результат:

Подправленный диалог в MapInfo

После компиляции всех изменений, файл mires.dll необходимо сохранить. Сохранение возможно только при закрытом MapInfo.

Работа с динамическими элементами диалога

В диалогах MapInfo не все элементы являются статическими. Некоторые элементы подгружаются посредством программного кода. Самый яркий пример - окно регистрации растра, которое является маленьким и крайне неудобным.

Окно регистрации растра

Чтобы его расширить

Эта страница является черновиком статьи.