Tworzenie i używanie zasobów w Visual Basic 6

Po Visual Basic uczniowie uczą się wszystkiego o pętlach, instrukcjach warunkowych i podprogramach itd., Jednym z kolejnych często pytają o to: „Jak dodać bitmapę, plik wav, niestandardowy kursor lub inny efekt specjalny?” Jeden odpowiedź to pliki zasobów. Gdy dodajesz plik przy użyciu plików zasobów Visual Studio, są one zintegrowane bezpośrednio z projektem Visual Basic, co zapewnia maksymalną szybkość wykonywania i minimalne problemy pakowanie i wdrażanie Twój podanie.

Pliki zasobów są dostępne zarówno w VB 6, jak i VB.NET, ale sposób ich użycia, podobnie jak wszystko inne, jest całkiem inny w obu systemach. Pamiętaj, że nie jest to jedyny sposób korzystania z plików w projekcie VB, ale ma realne zalety. Na przykład możesz dołączyć bitmapę do pliku Pudełko ze zdjęciami kontrolować lub korzystać z mciSendString Win32 API. „MCI” to przedrostek, który zwykle wskazuje ciąg poleceń multimedialnych.

Tworzenie pliku zasobów w VB 6

Możesz zobaczyć zasoby w projekcie zarówno w VB 6, jak i VB.NET w

instagram viewer
Eksplorator projektów okno (Solution Explorer w VB.NET - musieli zrobić to trochę inaczej). Nowy projekt nie będzie go miał, ponieważ zasoby nie są domyślnym narzędziem w VB 6. Dodajmy więc prosty projekt do projektu i zobaczmy, jak to się robi.

Pierwszym krokiem jest uruchomienie VB 6, wybierając a Standardowy plik EXE projekt w sprawie Nowy kartę w oknie dialogowym uruchamiania. Teraz wybierz Dodatki opcja na pasku menu, a następnie Menedżer dodatków ... Spowoduje to otwarcie okna dialogowego Menedżera dodatków.

Przewiń listę i znajdź Edytor zasobów VB 6. Możesz kliknąć go dwukrotnie lub umieścić znacznik wyboru w Załadowany / rozładowany pole, aby dodać to narzędzie do środowiska VB 6. Jeśli uważasz, że będziesz często używać edytora zasobów, możesz również zaznaczyć znacznik wyboru w polu Załaduj przy uruchomieniu i nie będziesz musiał ponownie przechodzić przez ten krok w przyszłości. Kliknij „OK”, a Edytor zasobów otworzy się. Możesz zacząć dodawać zasoby do swojego projektu!

Przejdź do paska menu i wybierz Projekt następnie Dodaj nowy plik zasobów lub po prostu kliknij prawym przyciskiem myszy w edytorze zasobów i wybierz „Otwórz” z wyskakującego menu kontekstowego. Otworzy się okno z monitem o nazwę i lokalizację pliku zasobów. Domyślna lokalizacja prawdopodobnie nie będzie taka, jak chcesz, więc przejdź do folderu projektu i wprowadź nazwę nowego pliku zasobów w Nazwa pliku pudełko. W tym artykule użyję nazwy „AboutVB.RES” dla tego pliku. Musisz potwierdzić utworzenie pliku w oknie weryfikacji, a plik „AboutVB.RES” zostanie utworzony i wypełniony w edytorze zasobów.

Obsługuje VB6

VB6 obsługuje następujące funkcje:

  • Edytor tabel ciągów
    („Edytuj tabele ciągów ...”)
  • Niestandardowe kursory - pliki „CUR”
    („Dodaj kursor ...”)
  • Ikony niestandardowe - pliki „ICO”
    („Dodaj ikonę ...”)
  • Niestandardowe bitmapy - pliki „BMP”
    („Dodaj mapę bitową ...”)
  • Zasoby zdefiniowane przez programistę
    („Dodaj zasób niestandardowy ...”)

VB 6 zapewnia prosty edytor ciągów, ale musisz mieć plik utworzony w innym narzędziu dla wszystkich innych opcji. Na przykład można utworzyć plik BMP za pomocą prostego programu Windows Paint.

Każdy zasób w pliku zasobów jest identyfikowany do VB 6 przez ID i nazwa w edytorze zasobów. Aby udostępnić zasób programowi, dodaj go w edytorze zasobów, a następnie użyj identyfikatora i zasobu „Typ”, aby wskazać je w swoim programie. Dodajmy cztery ikony do pliku zasobów i użyjmy ich w programie.

Po dodaniu zasobu sam plik jest kopiowany do projektu. Visual Studio 6 zapewnia całą kolekcję ikon w folderze ...

C: \ Program Files \ Microsoft Visual Studio \ Common \ Graphics \ Icons

Zgodnie z tradycją wybierzemy cztery „żywioły” greckiego filozofa Arystotelesa - Ziemię, Wodę, Powietrze i Ogień - z podkatalogu Żywioły. Po ich dodaniu identyfikator jest automatycznie przypisywany przez program Visual Studio (101, 102, 103 i 104).

Aby korzystać z ikon w programie, używamy funkcji VB 6 „Load Resource”. Istnieje kilka z tych funkcji do wyboru:

  • LoadResPicture (indeks, format) dla bitmap, ikon i kursorów

Użyj predefiniowanych stałych VB vbResBitmap w przypadku map bitowych VbResIcon dla ikon i vbResCursor dla kursorów dla parametru „format”. Ta funkcja zwraca obraz, którego można użyć bezpośrednio. LoadResData (wyjaśnione poniżej) zwraca ciąg zawierający rzeczywiste bity w pliku. Zobaczymy, jak z tego korzystać po pokazaniu ikon.

  • LoadResString (indeks) na struny
  • LoadResData (indeks, format) dla czegokolwiek do 64 KB

Jak wspomniano wcześniej, ta funkcja zwraca ciąg znaków z rzeczywistymi bitami w zasobie. Oto wartości, których można użyć tutaj dla parametru formatowania:

1 zasób kursora
2 Zasób bitmapy
3 ikona zasobów
4 Zasób menu
5 Okno dialogowe
6-łańcuchowy zasób
7 Zasób katalogu czcionek
8 Zasób czcionek
9 Tabela akceleratora
10 Zasób zdefiniowany przez użytkownika
12 Kursor grupowy
14 Ikona grupy

Ponieważ w naszym pliku zasobów AboutVB.RES mamy cztery ikony, użyjmy LoadResPicture (indeks, format) aby przypisać je do właściwości Picture przycisku CommandButton w VB 6.

Stworzyłem aplikację z czterema OptionButton komponenty oznaczone jako Ziemia, Woda, Powietrze i Ogień oraz cztery zdarzenia Click - po jednym dla każdej opcji. Potem dodałem CommandButton i zmieniłem właściwość Style na „1 - Graficzny”. Jest to konieczne, aby móc dodać niestandardową ikonę do CommandButton. Kod każdego przycisku OptionButton (i zdarzenia ładowania formularza - aby go zainicjować) wygląda następująco (z odpowiednio zmienionym Id i Caption dla innych zdarzeń ClickButton Click):

Niestandardowe zasoby

„Wielka sprawa” z niestandardowymi zasobami polega na tym, że zwykle musisz zapewnić sposób ich przetworzenia w kodzie programu. Tak jak Microsoft stwierdza: „zazwyczaj wymaga to użycia wywołań interfejsu API systemu Windows”. Tak zrobimy.

Przykład, który wykorzystamy, to szybki sposób na załadowanie tablicy z serią stałych wartości. Pamiętaj, że plik zasobów znajduje się w projekcie, więc jeśli wartości, które musisz załadować zmień, będziesz musiał zastosować bardziej tradycyjne podejście, takie jak plik sekwencyjny, który otwierasz i czytać. Interfejs API systemu Windows, którego będziemy używać, to CopyMemory API. CopyMemory kopiuje blok pamięci do innego bloku pamięci bez względu na przechowywany tam typ danych. Ta technika jest dobrze znana VB 6'ers jako ultra szybki sposób kopiowania danych w programie.

Ten program jest nieco bardziej zaangażowany, ponieważ najpierw musimy utworzyć plik zasobów zawierający serię długich wartości. Po prostu przypisałem wartości do tablicy:

Dim longs (10) As Long
longs (1) = 123456
longs (2) = 654321

... i tak dalej.

Następnie wartości można zapisać w pliku o nazwie MyLongs.longs za pomocą instrukcji „Put” VB 6.

Warto pamiętać, że plik zasobów nie zmienia się, chyba że usuniesz stary i dodasz nowy. Korzystając z tej techniki, musisz zaktualizować program, aby zmienić wartości. Aby dołączyć plik MyLongs.longs do programu jako zasób, dodaj go do pliku zasobów, wykonując te same czynności, co opisano powyżej, ale kliknij Dodaj zasób niestandardowy ... zamiast Dodaj ikonę... Następnie wybierz plik MyLongs.longs jako plik do dodania. Musisz także zmienić „Typ” zasobu, klikając go prawym przyciskiem myszy, wybierając „Właściwości” i zmieniając Typ na „longs”. Pamiętaj, że jest to typ pliku Twojego pliku MyLongs.longs.

Aby użyć utworzonego pliku zasobów do utworzenia nowej tablicy, najpierw zadeklaruj wywołanie API Win32 CopyMemory:

Następnie przeczytaj plik zasobów:

Następnie przenieś dane z tablicy bajtów do tablicy długich wartości. Przydziel tablicę dla wartości longs, używając wartości całkowitej długości ciągu bajtów podzielonej przez 4 (to znaczy 4 bajty na długość):

Teraz może wydawać się to dużym problemem, kiedy możesz po prostu zainicjować tablicę w zdarzeniu Form Load, ale pokazuje, jak używać niestandardowego zasobu. Gdybyś miał duży zestaw stałych, których potrzebujesz do zainicjowania tablicy, działałaby ona szybciej niż jakakolwiek inna inna metoda, o której mogę pomyśleć i nie musiałbyś mieć osobnego pliku dołączonego do aplikacji to.