Nachdem die Teilnehmer in Visual Basic alles über Schleifen, bedingte Anweisungen, Unterroutinen usw. gelernt haben, werden sie häufig gefragt: "Wie füge ich eine Bitmap, eine WAV-Datei, einen benutzerdefinierten Cursor oder einen anderen Spezialeffekt hinzu? " Eine Antwort ist Ressourcendateien. Wenn Sie eine Datei mithilfe von Visual Studio-Ressourcendateien hinzufügen, werden diese direkt in Ihr Visual Basic-Projekt integriert, um maximale Ausführungsgeschwindigkeit und minimalen Aufwand beim Packen und Bereitstellen Ihrer Anwendung zu erzielen.
Ressourcendateien sind sowohl in VB 6 als auch in VB.NET verfügbar, aber die Art und Weise, wie sie verwendet werden, unterscheidet sich wie alles andere erheblich zwischen den beiden Systemen. Beachten Sie, dass dies nicht die einzige Möglichkeit ist, Dateien in einem VB-Projekt zu verwenden, sondern echte Vorteile bietet. Sie können beispielsweise eine Bitmap in ein Bilderkiste steuern oder verwenden Sie die mciSendString Win32 API. "MCI" ist ein Präfix, das normalerweise eine Multimedia-Befehlszeichenfolge angibt.
Sie können die Ressourcen in einem Projekt sowohl in VB 6 als auch in VB.NET im sehen Projektexplorer Fenster (Solution Explorer in VB.NET - sie mussten es nur ein bisschen anders machen). Ein neues Projekt wird keine haben, da Ressourcen in VB 6 kein Standardwerkzeug sind. Fügen wir also einem Projekt eine einfache Ressource hinzu und sehen Sie, wie das gemacht wird.
Schritt eins ist das Starten von VB 6 durch Auswahl von a Standard-EXE Projekt auf der Neu Registerkarte im Startdialog. Wählen Sie nun die Add-Ins Option in der Menüleiste und dann die Add-In-Manager… Dadurch wird das Dialogfeld Add-In-Manager geöffnet.
Scrollen Sie durch die Liste und suchen Sie VB 6 Resource Editor. Sie können einfach darauf doppelklicken oder ein Häkchen setzen Geladen / Entladen Klicken Sie auf das Kästchen, um dieses Tool zu Ihrer VB 6-Umgebung hinzuzufügen. Wenn Sie der Meinung sind, dass Sie den Ressourcen-Editor häufig verwenden werden, können Sie auch ein Häkchen in das Kästchen setzen Beim Start laden und Sie müssen diesen Schritt in Zukunft nicht mehr durchführen. Klicken Sie auf "OK" und der Ressourcen-Editor wird geöffnet. Jetzt können Sie Ihrem Projekt Ressourcen hinzufügen!
Gehen Sie zur Menüleiste und wählen Sie Projekt dann Neue Ressourcendatei hinzufügen Oder klicken Sie einfach mit der rechten Maustaste in den Ressourcen-Editor und wählen Sie im Kontextmenü die Option "Öffnen". Ein Fenster wird geöffnet, in dem Sie nach dem Namen und dem Speicherort einer Ressourcendatei gefragt werden. Der Standardspeicherort wird wahrscheinlich nicht Ihren Vorstellungen entsprechen. Navigieren Sie zu Ihrem Projektordner und geben Sie den Namen Ihrer neuen Ressourcendatei in das ein Dateiname Box. In diesem Artikel verwende ich den Namen "AboutVB.RES" für diese Datei. Sie müssen die Erstellung der Datei in einem Überprüfungsfenster bestätigen, und die Datei "AboutVB.RES" wird erstellt und in den Ressourcen-Editor eingefügt.
VB6 unterstützt Folgendes:
VB 6 bietet einen einfachen Editor für Zeichenfolgen, für alle anderen Optionen muss jedoch eine Datei in einem anderen Tool erstellt werden. Sie können beispielsweise eine BMP-Datei mit dem einfachen Windows Paint-Programm erstellen.
Jede Ressource in der Ressourcendatei ist gegenüber VB 6 durch ein gekennzeichnet Ich würde und einen Namen im Ressourcen-Editor. Um eine Ressource für Ihr Programm verfügbar zu machen, fügen Sie sie im Ressourcen-Editor hinzu und verwenden dann die ID und den Ressourcentyp, um auf sie in Ihrem Programm zu verweisen. Fügen Sie der Ressourcendatei vier Symbole hinzu und verwenden Sie sie im Programm.
Wenn Sie eine Ressource hinzufügen, wird die eigentliche Datei in Ihr Projekt kopiert. Visual Studio 6 enthält eine ganze Sammlung von Symbolen im Ordner…
C: \ Programme \ Microsoft Visual Studio \ Common \ Graphics \ Icons
Traditionell werden wir die vier "Elemente" des griechischen Philosophen Aristoteles - Erde, Wasser, Luft und Feuer - aus dem Unterverzeichnis "Elemente" auswählen. Wenn Sie sie hinzufügen, wird die ID von Visual Studio (101, 102, 103 und 104) automatisch zugewiesen.
Um die Symbole in einem Programm zu verwenden, verwenden wir eine VB 6 "Load Resource" -Funktion. Es gibt mehrere dieser Funktionen zur Auswahl:
Verwenden Sie die vordefinierten VB-Konstanten vbResBitmap für Bitmaps, vbResIcon für Symbole und vbResCursor für Cursor für den Parameter "format". Diese Funktion gibt ein Bild zurück, das Sie direkt verwenden können. LoadResData (unten erklärt) gibt eine Zeichenfolge zurück, die die tatsächlichen Bits in der Datei enthält. Wir werden sehen, wie man das benutzt, nachdem wir Symbole demonstriert haben.
Wie bereits erwähnt, gibt diese Funktion eine Zeichenfolge mit den tatsächlichen Bits in der Ressource zurück. Dies sind die Werte, die für den Formatparameter hier verwendet werden können:
1 Cursor-Ressource
2 Bitmap-Ressource
3 Symbolressource
4 Menüressource
5 Dialogfeld
6 Zeichenkettenressource
7 Schriftartverzeichnisressource
8 Schriftressource
9 Beschleunigertabelle
10 Benutzerdefinierte Ressource
12 Gruppencursor
14 Gruppensymbol
Da unsere AboutVB.RES-Ressourcendatei vier Symbole enthält, verwenden wir diese LoadResPicture (Index, Format) um diese der Picture-Eigenschaft eines CommandButton in VB 6 zuzuweisen.
Ich habe eine Anwendung mit vier erstellt Optionsschaltfläche Komponenten mit der Bezeichnung Erde, Wasser, Luft und Feuer sowie vier Klickereignisse - eines für jede Option. Dann fügte ich ein Befehlsschaltfläche und änderte die Style-Eigenschaft in "1 - Graphical". Dies ist erforderlich, um dem Befehlsschaltfläche ein benutzerdefiniertes Symbol hinzufügen zu können. Der Code für jedes OptionButton-Ereignis (und das Formularladeereignis, um es zu initialisieren) sieht folgendermaßen aus (wobei die ID und die Beschriftung für die anderen OptionButton-Click-Ereignisse entsprechend geändert wurden):
Private Sub Option1_Click ()
Das "große Problem" bei benutzerdefinierten Ressourcen ist, dass Sie normalerweise eine Möglichkeit bereitstellen müssen, sie in Ihrem Programmcode zu verarbeiten. Laut Microsoft erfordert dies in der Regel die Verwendung von Windows-API-Aufrufen. Das werden wir tun.
Das Beispiel, das wir verwenden, ist eine schnelle Möglichkeit, ein Array mit einer Reihe von konstanten Werten zu laden. Denken Sie daran, dass die Ressourcendatei in Ihrem Projekt enthalten ist. Wenn sich die zu ladenden Werte ändern, müssen Sie einen traditionelleren Ansatz verwenden, z. B. eine sequentielle Datei, die Sie öffnen und lesen. Die Windows-API, die wir verwenden, ist die CopyMemory API. CopyMemory kopiert den Speicherblock in einen anderen Speicherblock, unabhängig vom dort gespeicherten Datentyp. Diese Technik ist VB 6'ers als ultraschnelle Methode zum Kopieren von Daten innerhalb eines Programms bekannt.
Dieses Programm ist etwas komplizierter, weil wir zuerst eine Ressourcendatei erstellen müssen, die eine Reihe langer Werte enthält. Ich habe einem Array einfach Werte zugewiesen:
Trübe Sehnsüchte (10) So lange
longs (1) = 123456
longs (2) = 654321
… und so weiter.
Dann können die Werte in eine aufgerufene Datei geschrieben werden MyLongs.longs mit der VB 6 "Put" -Anweisung.
HDatei so lange abdunkeln
Denken Sie daran, dass sich die Ressourcendatei nur ändert, wenn Sie die alte löschen und eine neue hinzufügen. Mit dieser Technik müssten Sie also das Programm aktualisieren, um die Werte zu ändern. Um die Datei MyLongs.longs als Ressource in Ihr Programm aufzunehmen, fügen Sie sie mit den oben beschriebenen Schritten zu einer Ressourcendatei hinzu, klicken Sie jedoch auf Benutzerdefinierte Ressource hinzufügen… statt Symbol hinzufügen ... Wählen Sie dann die Datei MyLongs.longs als die hinzuzufügende Datei aus. Sie müssen auch den "Typ" der Ressource ändern, indem Sie mit der rechten Maustaste auf diese Ressource klicken, "Eigenschaften" auswählen und den Typ in "longs" ändern. Beachten Sie, dass dies der Dateityp Ihrer MyLongs.longs-Datei ist.
Um die von Ihnen erstellte Ressourcendatei zum Erstellen eines neuen Arrays zu verwenden, deklarieren Sie zunächst den Win32 CopyMemory-API-Aufruf:
Private Declare Sub CopyMemory _
Dann lesen Sie die Ressourcendatei:
Dim bytes () As Byte
Verschieben Sie als Nächstes die Daten aus dem Bytearray in ein Array mit langen Werten. Ordnen Sie den Long-Werten ein Array zu, indem Sie den ganzzahligen Wert der Länge der Bytefolge dividiert durch 4 (dh 4 Byte pro Länge) verwenden:
ReDim longs (1 To (UBound (Bytes)) \ 4) As Long
Dies mag wie eine Menge Ärger erscheinen, wenn Sie das Array nur im Form Load-Ereignis initialisieren könnten, es zeigt jedoch, wie eine benutzerdefinierte Ressource verwendet wird. Wenn Sie eine große Anzahl von Konstanten hätten, mit denen Sie das Array initialisieren mussten, würde es schneller laufen als jede andere mir vorstellbare Methode, und Sie müssten keine separate Datei in Ihrer Anwendung haben, um dies zu tun.