После Visual Basic учащиеся узнают все о циклах и условных выражениях, подпрограммах и т. Д., Один из следующих часто спрашивают: «Как добавить растровое изображение, файл WAV, пользовательский курсор или какой-нибудь другой спецэффект?» Один ответ файлы ресурсов. Когда вы добавляете файл с помощью файлов ресурсов Visual Studio, они интегрируются непосредственно в ваш проект Visual Basic для максимальной скорости выполнения и минимальных хлопот упаковка и развертывание ваш заявление.
Файлы ресурсов доступны как в VB 6, так и VB.NET, но то, как они используются, как и все остальное, несколько отличается в двух системах. Имейте в виду, что это не единственный способ использовать файлы в проекте VB, но он имеет реальные преимущества. Например, вы можете включить растровое изображение в PictureBox контролировать или использовать mciSendString Win32 API. «MCI» - это префикс, который обычно обозначает мультимедийную командную строку.
Создание файла ресурсов в VB 6
Вы можете увидеть ресурсы в проекте в VB 6 и VB.NET в
Project Explorer окно (Solution Explorer в VB.NET - они должны были сделать его немного другим). Новый проект не будет иметь никаких, так как ресурсы не являются инструментом по умолчанию в VB 6. Итак, давайте добавим простой ресурс в проект и посмотрим, как это сделать.Шаг первый - запустить VB 6, выбрав Стандартный EXE проект на новый вкладка в диалоге запуска. Теперь выберите Add-Ins вариант в строке меню, а затем Менеджер надстроек ... Откроется диалоговое окно диспетчера надстроек.
Прокрутите список вниз и найдите VB 6 Resource Editor. Вы можете просто дважды щелкнуть по нему или поставить галочку в Грузу / порожнем поле, чтобы добавить этот инструмент в вашу среду VB 6. Если вы думаете, что собираетесь часто использовать Редактор ресурсов, то вы также можете поставить галочку в поле Загрузить при запуске и вам не придется проходить этот шаг снова в будущем. Нажмите «ОК» и откроется редактор ресурсов. Вы готовы начать добавлять ресурсы в свой проект!
Зайдите в строку меню и выберите проект тогда Добавить новый файл ресурсов или просто щелкните правой кнопкой мыши в редакторе ресурсов и выберите «Открыть» из всплывающего контекстного меню. Откроется окно с запросом имени и местоположения файла ресурса. Расположение по умолчанию, вероятно, будет не тем, что вы хотите, поэтому перейдите в папку вашего проекта и введите имя вашего нового файла ресурсов в поле Имя файла коробка. В этой статье я буду использовать имя «AboutVB.RES» для этого файла. Вам нужно будет подтвердить создание файла в окне проверки, и файл «AboutVB.RES» будет создан и заполнен в редакторе ресурсов.
VB6 Поддерживает
VB6 поддерживает следующее:
- Редактор таблицы строк
(«Редактировать таблицы строк ...») - Пользовательские курсоры - файлы "CUR"
(«Добавить курсор ...») - Пользовательские иконки - файлы "ICO"
(«Добавить иконку ...») - Пользовательские растровые изображения - файлы "BMP"
(«Добавить растровое изображение ...») - Программист определил ресурсы
(«Добавить пользовательский ресурс ...»)
VB 6 предоставляет простой редактор для строк, но вы должны иметь файл, созданный в другом инструменте для всех других вариантов. Например, вы можете создать файл BMP, используя простую программу Windows Paint.
Каждый ресурс в файле ресурсов идентифицируется для VB 6 посредством Я бы и имя в редакторе ресурсов. Чтобы сделать ресурс доступным для вашей программы, вы добавляете их в Редактор ресурсов, а затем используете Id и ресурс «Тип», чтобы указать на них в вашей программе. Давайте добавим четыре иконки в файл ресурсов и используем их в программе.
Когда вы добавляете ресурс, сам файл копируется в ваш проект. Visual Studio 6 предоставляет целую коллекцию иконок в папке ...
C: \ Program Files \ Microsoft Visual Studio \ Common \ Graphics \ Icons
Чтобы следовать традиции, мы выберем четыре «элемента» греческого философа Аристотеля - Землю, Воду, Воздух и Огонь - из подкаталога Элементы. При их добавлении идентификатор автоматически назначается Visual Studio (101, 102, 103 и 104).
Чтобы использовать значки в программе, мы используем функцию «Resource» VB 6. Есть несколько из этих функций на выбор:
- LoadResPicture (индекс, формат) для растровых изображений, иконок и курсоров
Используйте предопределенные константы VB vbResBitmap для растровых изображений, vbResIcon для значков и vbResCursor для курсоров для параметра «формат». Эта функция возвращает изображение, которое вы можете использовать напрямую. LoadResData (поясняется ниже) возвращает строку, содержащую фактические биты в файле. Мы увидим, как это использовать после того, как продемонстрируем значки.
- LoadResString (index) для струнных
- LoadResData (индекс, формат) для чего-либо до 64K
Как отмечалось ранее, эта функция возвращает строку с фактическими битами в ресурсе. Это значения, которые можно использовать для параметра формата здесь:
1 Курсорный ресурс
2 Растровый ресурс
3 Значок ресурса
4 Ресурс меню
5 Диалоговое окно
6 Строковый ресурс
7 Ресурс каталога шрифтов
8 Ресурс шрифта
9 Акселераторный стол
10 Пользовательский ресурс
12 Групповой курсор
14 Значок группы
Поскольку в нашем файле ресурсов AboutVB.RES есть четыре значка, давайте используем LoadResPicture (индекс, формат) назначить их свойству Picture для CommandButton в VB 6.
Я создал приложение с четырьмя OptionButton компоненты с надписью Земля, Вода, Воздух и Огонь и четыре события Щелчка - по одному для каждой опции. Затем я добавил CommandButton и изменил свойство Style на «1 - Графический». Это необходимо, чтобы иметь возможность добавить пользовательский значок в CommandButton. Код для каждого OptionButton (и события Form Load - для его инициализации) выглядит следующим образом (с соответствующим изменением Id и Caption для других событий Click Option Option):
Пользовательские Ресурсы
«Большое дело» с пользовательскими ресурсами заключается в том, что обычно вы должны предоставить способ обработки их в программном коде. В качестве Microsoft утверждает, что «это обычно требует использования вызовов API Windows». Это то, что мы будем делать.
Пример, который мы будем использовать, - это быстрый способ загрузить массив последовательностью постоянных значений. Помните, что файл ресурсов входит в ваш проект, поэтому, если значения, которые вам нужно загрузить изменить, вам придется использовать более традиционный подход, такой как последовательный файл, который вы открываете и читать. Windows API, который мы будем использовать, это CopyMemory API. CopyMemory копирует блок памяти в другой блок памяти независимо от того, какой тип данных там хранится. Эта техника хорошо известна VB 6 как сверхбыстрый способ копирования данных внутри программы.
Эта программа немного сложнее, потому что сначала мы должны создать файл ресурсов, содержащий серию длинных значений. Я просто присвоил значения массиву:
Тусклые длинные (10) As Long
longs (1) = 123456
longs (2) = 654321
... и так далее.
Затем значения могут быть записаны в файл с именем MyLongs.longs используя VB 6 «Put».
Полезно помнить, что файл ресурсов не изменится, если вы не удалите старый и не добавите новый. Таким образом, используя эту технику, вам придется обновить программу, чтобы изменить значения. Чтобы включить файл MyLongs.longs в вашу программу в качестве ресурса, добавьте его в файл ресурса, выполнив те же действия, что описаны выше, но нажмите кнопку Добавить пользовательский ресурс ... вместо добавления значка... Затем выберите файл MyLongs.longs в качестве файла для добавления. Вы также должны изменить «Тип» ресурса, щелкнув правой кнопкой мыши по этому ресурсу, выбрав «Свойства» и изменив «Тип» на «длинные». Обратите внимание, что это тип файла MyLongs.longs.
Чтобы использовать файл ресурса, который вы создали, для создания нового массива, сначала объявите вызов Win32 CopyMemory API:
Затем прочитайте файл ресурса:
Затем переместите данные из массива байтов в массив длинных значений. Выделите массив для значений long, используя целочисленное значение длины строки байтов, деленное на 4 (то есть 4 байта на длину):
Теперь это может показаться большой проблемой, когда вы можете просто инициализировать массив в событии Form Load, но он демонстрирует, как использовать пользовательский ресурс. Если бы у вас был большой набор констант, с которыми вам нужно было инициализировать массив, он работал бы быстрее, чем любой другой способ, который я могу придумать, и вам не нужно будет иметь отдельный файл, включенный в ваше приложение, чтобы сделать Это.