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

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 38: Строка 38:


[[Файл:Resources4.jpg|200px|thumb|center|Растянутое окно регистрации растра]]
[[Файл:Resources4.jpg|200px|thumb|center|Растянутое окно регистрации растра]]
== Фиксирование пунктов меню ==
== Работа с текстовыми  ==


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

Версия от 21:59, 2 января 2017

В этой заметке будет описан способ редактирования диалоговых окон, текстовых объектов и других объектов интерфейса, находящиеся в ресурсах динамических библиотек, подгружаемых 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 не все элементы являются статическими. Некоторые элементы подгружаются посредством программного кода. Самый яркий пример - окно регистрации растра, которое является крайне неудобным для выполнения своих задач.

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

Чтобы его расширить, необходимо помимо растягивания главного окна диалога растянуть по длине полосы вертикальной и горизонтальной прокрутки. После этого рабочее пространство привязки увеличится. А при необходимости можно поиграться с другими элементами управления и в итоге получить что-то вроде этого:

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