Bronnen maken en gebruiken in Visual Basic 6.
Jetta Productions / Getty Images
Nadat Visual Basic-studenten alles hebben geleerd over loops en voorwaardelijke instructies en subroutines, enzovoort, is een van de volgende dingen waar ze vaak naar vragen: 'Hoe voeg ik een bitmap, een wav-bestand, een aangepaste cursor of een ander speciaal effect toe? ' Een antwoord is: bronbestanden . Wanneer u een bestand toevoegt met behulp van Visual Studio-bronbestanden, worden deze rechtstreeks in uw Visual Basic-project geïntegreerd voor maximale uitvoeringssnelheid en minimaal gedoe verpakken en inzetten uwsollicitatie.
Bronbestanden zijn beschikbaar in zowel VB 6 als VB.NET , maar de manier waarop ze worden gebruikt, zoals al het andere, verschilt nogal tussen de twee systemen. Houd er rekening mee dat dit niet de enige manier is om bestanden in een VB-project te gebruiken, maar het heeft echte voordelen. U kunt bijvoorbeeld een bitmap opnemen in a Foto doos controle of gebruik de mciSendString Win32-API. 'MCI' is een voorvoegsel dat gewoonlijk een Multimedia Command String aangeeft.
Een bronbestand maken in VB 6
U kunt de bronnen in een project zien in zowel VB 6 als VB.NET in de Projectverkenner window (Solution Explorer in VB.NET - ze moesten het net een beetje anders maken). Een nieuw project heeft er geen omdat resources geen standaardtool zijn in VB 6. Laten we dus een eenvoudige resource aan een project toevoegen en kijken hoe dat wordt gedaan.
Stap één is om VB 6 te starten door a . te selecteren Standaard EXE project op de Nieuw tabblad in het opstartdialoogvenster. Selecteer nu de Invoegtoepassingen optie op de menubalk, en dan de Invoegtoepassingsbeheer... Hierdoor wordt het dialoogvenster Add-In Manager geopend.
Scroll door de lijst en vind VB 6-bronneneditor . U kunt er gewoon op dubbelklikken of u kunt een vinkje plaatsen in de Geladen/Ontladen box om deze tool toe te voegen aan uw VB 6-omgeving. Als je denkt dat je de Resource Editor veel gaat gebruiken, dan kun je ook een vinkje plaatsen in het vakje Laden bij opstarten en u hoeft deze stap in de toekomst niet opnieuw te doorlopen. Klik op 'OK' en de Resources Editor springt open. U bent klaar om bronnen aan uw project toe te voegen!
Ga naar de menubalk en selecteer Project dan Nieuw bronbestand toevoegen of klik met de rechtermuisknop in de Resource Editor en selecteer 'Openen' in het contextmenu dat verschijnt. Er wordt een venster geopend waarin u wordt gevraagd om de naam en locatie van een bronbestand. De standaardlocatie zal waarschijnlijk niet zijn wat u wilt, dus navigeer naar uw projectmap en voer de naam van uw nieuwe bronbestand in de Bestandsnaam doos. In dit artikel gebruik ik de naam 'AboutVB.RES' voor dit bestand. U moet de aanmaak van het bestand bevestigen in een verificatievenster en het 'AboutVB.RES'-bestand wordt gemaakt en ingevuld in de Resource Editor.
VB6 ondersteunt
VB6 ondersteunt het volgende:
- Een tekenreekstabeleditor
('Tekenreekstabellen bewerken...') - Aangepaste cursors - 'CUR'-bestanden
('Cursor toevoegen...') - Aangepaste pictogrammen - 'ICO'-bestanden
('Pictogram toevoegen...') - Aangepaste bitmaps - 'BMP'-bestanden
('Bitmap toevoegen...') - Door programmeur gedefinieerde bronnen
('Aangepaste bron toevoegen...')
VB 6 biedt een eenvoudige editor voor strings, maar voor alle andere keuzes moet u een bestand in een andere tool hebben gemaakt. U kunt bijvoorbeeld een BMP-bestand maken met het eenvoudige Windows Paint-programma.
Elke resource in het resourcebestand wordt in VB 6 geïdentificeerd door een ID kaart en een naam in de Resource Editor. Om een resource beschikbaar te maken voor uw programma, voegt u deze toe in de Resource Editor en gebruikt u vervolgens de Id en de resource 'Type' om ernaar te verwijzen in uw programma. Laten we vier pictogrammen aan het bronbestand toevoegen en deze in het programma gebruiken.
Wanneer u een bron toevoegt, wordt het eigenlijke bestand zelf naar uw project gekopieerd. Visual Studio 6 biedt een hele verzameling pictogrammen in de map...
C:Program FilesMicrosoft Visual StudioCommonGraphicsIcons
Traditiegetrouw selecteren we de vier 'elementen' van de Griekse filosoof Aristoteles - aarde, water, lucht en vuur - uit de submap Elementen. Wanneer u ze toevoegt, wordt de id automatisch toegewezen door Visual Studio (101, 102, 103 en 104).
Om de iconen in een programma te gebruiken, gebruiken we een VB 6 'Load Resource' functie. Er zijn verschillende van deze functies om uit te kiezen:
Gebruik de vooraf gedefinieerde VB-constanten vbResBitmap voor bitmaps, vbResIcon voor pictogrammen, en vbResCursor voor cursors voor de parameter 'format'. Deze functie retourneert een afbeelding die u direct kunt gebruiken. ResData laden (hieronder uitgelegd) retourneert een tekenreeks die de daadwerkelijke bits in het bestand bevat. We zullen zien hoe we dat kunnen gebruiken nadat we pictogrammen hebben gedemonstreerd.
Zoals eerder opgemerkt, retourneert deze functie een tekenreeks met de daadwerkelijke bits in de bron. Dit zijn de waarden die hier voor de formaatparameter kunnen worden gebruikt:
1 Cursorbron
2 Bitmapbron
3 Pictogrambron
4 Menubron
5 Dialoogvenster
6 String-bron
7 Bron voor lettertypedirectory
8 Fontbron
9 Versnellingstabel
10 Door de gebruiker gedefinieerde bron
12 Groepscursor
14 Groepspictogram
Aangezien we vier pictogrammen in ons AboutVB.RES-bronbestand hebben, gebruiken we LoadResPicture (index, formaat) om deze toe te wijzen aan de eigenschap Picture van een CommandButton in VB 6.
Ik heb een applicatie gemaakt met vier OptieKnop componenten met het label Earth, Water, Air en Fire en vier Click-gebeurtenissen - één voor elke optie. Toen voegde ik een Command knop en wijzigde de stijleigenschap in '1 – Grafisch.' Dit is nodig om een aangepast pictogram aan de CommandButton te kunnen toevoegen. De code voor elke OptionButton (en de Form Load-gebeurtenis - om deze te initialiseren) ziet er als volgt uit (met de Id en Caption dienovereenkomstig gewijzigd voor de andere OptionButton Click-gebeurtenissen):
Aangepaste bronnen
Het 'big deal' met aangepaste bronnen is dat je normaal gesproken een manier moet bieden om ze in je programmacode te verwerken. Net zo Microsoft stelt het, 'dit vereist meestal het gebruik van Windows API-aanroepen.' Dat is wat we zullen doen.
Het voorbeeld dat we zullen gebruiken is een snelle manier om een array te laden met een reeks constante waarden. Onthoud dat het bronbestand in uw project is opgenomen, dus als de waarden die u moet laden veranderen, moet u een meer traditionele benadering gebruiken, zoals een sequentieel bestand dat u opent en leest. De Windows API die we zullen gebruiken is de KopieerGeheugen API. CopyMemory kopieert een geheugenblok naar een ander geheugenblok, ongeacht het gegevenstype dat daar is opgeslagen. Deze techniek staat bij VB 6'ers bekend als een ultrasnelle manier om gegevens in een programma te kopiëren.
Dit programma is wat ingewikkelder omdat we eerst een bronbestand moeten maken dat een reeks lange waarden bevat. Ik heb eenvoudig waarden toegewezen aan een array:
Dim lang(10) Zo lang
lang(1) = 123456
lang (2) = 654321
... enzovoorts.
Vervolgens kunnen de waarden worden geschreven naar een bestand met de naam MijnLongs.longs met behulp van de VB 6 'Put'-instructie.
Het is een goed idee om te onthouden dat het bronbestand niet verandert, tenzij u het oude verwijdert en een nieuwe toevoegt. Als u deze techniek gebruikt, moet u het programma dus bijwerken om de waarden te wijzigen. Om het bestand MyLongs.longs als bron in uw programma op te nemen, voegt u het toe aan een bronbestand met dezelfde stappen als hierboven beschreven, maar klikt u op de Aangepaste bron toevoegen... in plaats van Pictogram toevoegen... Selecteer vervolgens het bestand MyLongs.longs als het bestand dat u wilt toevoegen. U moet ook het 'Type' van de resource wijzigen door met de rechtermuisknop op die resource te klikken, 'Eigenschappen' te selecteren en het Type te wijzigen in 'longs'. Merk op dat dit het bestandstype is van uw MyLongs.longs-bestand.
Om het bronbestand dat u hebt gemaakt te gebruiken om een nieuwe array te maken, declareert u eerst de Win32 CopyMemory API-aanroep:
Lees dan het bronbestand:
Verplaats vervolgens de gegevens van de bytes-array naar een array met lange waarden. Wijs een array toe voor de longs-waarden met behulp van de gehele waarde van de lengte van de reeks bytes gedeeld door 4 (dat wil zeggen, 4 bytes per long):
Dit lijkt misschien een heel gedoe als je de array gewoon zou kunnen initialiseren in de Form Load-gebeurtenis, maar het laat wel zien hoe je een aangepaste resource kunt gebruiken. Als je een grote set constanten had waarmee je de array moest initialiseren, zou het sneller werken dan elke andere methode die ik kan bedenken en zou je geen apart bestand bij je toepassing hoeven te hebben om het te doen.