Efter att Visual Basic-elever har lärt sig allt om slingor och villkorade uttalanden och subroutiner och så vidare, är en av de nästa saker som de ofta frågar om: "Hur lägger jag till en bitmapp, en wav-fil, en anpassad markör eller någon annan specialeffekt? " Ett svar är resursfiler. När du lägger till en fil med hjälp av Visual Studio-resursfiler integreras de direkt i ditt Visual Basic-projekt för maximal körhastighet och minimalt krångelförpackning och distribuerar din applikation.
Resursfiler finns tillgängliga i både VB 6 och VB.NET, men hur de används, liksom allt annat, är ganska annorlunda mellan de två systemen. Tänk på att detta inte är det enda sättet att använda filer i ett VB-projekt, men det har verkliga fördelar. Till exempel kan du inkludera en bitmapp i en PictureBox kontrollera eller använda mciSendString Win32 API. "MCI" är ett prefix som vanligtvis indikerar en multimediakommandosträng.
Du kan se resurserna i ett projekt i både VB 6 och VB.NET i Project Explorer fönster (Solution Explorer i VB.NET - de var tvungna att göra det lite annorlunda). Ett nytt projekt kommer inte att ha några eftersom resurser inte är ett standardverktyg i VB 6. Så låt oss lägga till en enkel resurs till ett projekt och se hur det görs.
Steg ett är att starta VB 6 genom att välja a Standard EXE projekt på Ny -fliken i startdialogen. Välj nu Tillägg på menyraden och sedan på Tilläggshanterare ... Detta öppnar dialogrutan Add-In Manager.
Bläddra nedför listan och hitta VB 6 Resource Editor. Du kan bara dubbelklicka på den eller så kan du sätta en bock i Laddad / Obelastad för att lägga till det här verktyget i din VB 6-miljö. Om du tror att du kommer att använda resursredigeraren mycket kan du också placera en bock i rutan Ladda vid uppstart och du kommer inte att behöva gå igenom detta steg igen i framtiden. Klicka på "OK" och resursredigeraren öppnas. Du är redo att börja lägga till resurser till ditt projekt!
Gå till menyfältet och välj Projekt sedan Lägg till ny resursfil eller högerklicka bara i Resursredigeraren och välj "Öppna" från snabbmenyn som dyker upp. Ett fönster öppnas, där du får en resursfils namn och plats. Standardplatsen är förmodligen inte vad du vill, så naviger till din projektmapp och ange namnet på din nya resursfil i Filnamn låda. I den här artikeln använder jag namnet "AboutVB.RES" för den här filen. Du måste bekräfta skapandet av filen i ett verifieringsfönster och filen "AboutVB.RES" skapas och fylls i Resource Editor..
VB6 stöder följande:
VB 6 tillhandahåller en enkel redigerare för strängar men du måste ha en fil skapad i ett annat verktyg för alla andra val. Till exempel kan du skapa en BMP-fil med det enkla Windows Paint-programmet.
Varje resurs i resursfilen identifieras till VB 6 av en Id och ett namn i resursredigeraren. För att göra en resurs tillgänglig för ditt program lägger du till dem i Resource Editor och använder sedan Id och resursen "Type" för att peka på dem i ditt program. Låt oss lägga till fyra ikoner till resursfilen och använda dem i programmet.
När du lägger till en resurs kopieras själva filen till ditt projekt. Visual Studio 6 ger en hel samling ikoner i mappen ...
C: \ Programfiler \ Microsoft Visual Studio \ Common \ Grafik \ Ikoner
För att följa traditionen väljer vi den grekiska filosofen Aristoteles fyra "element" - Jorden, vatten, luft och eld - från underkatalogen Elements. När du lägger till dem tilldelas ID automatiskt av Visual Studio (101, 102, 103 och 104).
För att använda ikonerna i ett program använder vi en VB 6 "Load Resource" -funktion. Det finns flera av dessa funktioner att välja mellan:
Använd VB: s fördefinierade konstanter vbResBitmap för bitmappar, vbResIcon för ikoner, och vbResCursor för markörer för parametern "format". Denna funktion returnerar en bild som du kan använda direkt. LoadResData (förklaras nedan) returnerar en sträng som innehåller de faktiska bitarna i filen. Vi får se hur vi använder det när vi visar ikoner.
Som noterats tidigare returnerar denna funktion en sträng med de faktiska bitarna i resursen. Dessa är värdena som kan användas för formatparameter här:
1 Markörresurs
2 Bitmap-resurs
3 Ikonresurs
4 Menyresurs
5 Dialogrutan
6 Strängresurs
7 Teckensnittskatalogresurs
8 Teckensnitt resurs
9 Acceleratorbord
10 Användardefinierad resurs
12 Gruppmarkör
14 Gruppikon
Eftersom vi har fyra ikoner i vår AboutVB.RES resursfil, låt oss använda LoadResPicture (index, format) för att tilldela dessa till egenskapen Picture of a CommandButton i VB 6.
Jag skapade en applikation med fyra OptionButton komponenter märkta Earth, Water, Air and Fire och fyra Click-händelser - en för varje alternativ. Sedan lade jag till en Kommandoknapp och ändrade stilegenskapen till "1 - Grafisk." Detta är nödvändigt för att kunna lägga till en anpassad ikon till CommandButton. Koden för varje OptionButton (och Form Load-händelsen - för att initiera den) ser ut så här (med Id och Caption ändras i enlighet därmed för de andra OptionButton Click-händelserna):
Privat subalternativ1_Klicka ()
Den "stora affären" med anpassade resurser är att du normalt måste ge ett sätt att bearbeta dem i din programkod. Som Microsoft säger det, "detta kräver vanligtvis användning av Windows API-samtal." Det är vad vi ska göra.
Exemplet som vi använder är ett snabbt sätt att ladda en matris med en serie konstanta värden. Kom ihåg att resursfilen ingår i ditt projekt, så om värdena som du behöver ladda ändras måste du använda ett mer traditionellt tillvägagångssätt som en sekvensfil som du öppnar och läser. Det Windows API som vi använder är CopyMemory API. CopyMemory kopierar minnesblock till ett annat minnesblock utan hänsyn till den datatyp som finns lagrad där. Denna teknik är välkänd för VB 6'ers som ett ultrasnabbt sätt att kopiera data i ett program.
Detta program är lite mer involverat eftersom vi först måste skapa en resursfil som innehåller en serie långa värden. Jag tilldelade helt enkelt värden till en matris:
Dim längtar (10) Så länge
längtar (1) = 123456
längtar (2) = 654321
… och så vidare.
Sedan kan värdena skrivas till en fil som heter MyLongs.longs med hjälp av uttalandet VB 6 "Put".
Dim hFile As Long
Det är en bra idé att komma ihåg att resursfilen inte ändras om du inte tar bort den gamla och lägger till en ny. Så med den här tekniken måste du uppdatera programmet för att ändra värdena. För att inkludera filen MyLongs.longs i ditt program som en resurs, lägg till den till en resursfil med samma steg som beskrivs ovan, men klicka på Lägg till anpassad resurs ... istället för Lägg till ikon ... Välj sedan MyLongs.longs-filen som den fil som ska läggas till. Du måste också ändra resursens "typ" genom att högerklicka på den resursen, välja "Egenskaper" och ändra typen till "länge". Observera att detta är filtypen för din MyLongs.longs-fil.
För att använda resursfilen som du har skapat för att skapa en ny matris, förklara först Win32 CopyMemory API-samtalet:
Private Declare Sub CopyMemory _
Läs sedan resursfilen:
Dim bytes () Som Byte
Flytta sedan data från byte-arrayen till en matris med långa värden. Tilldela en matris för längdvärdena med hjälp av heltalet för längden på strängen med byte dividerat med 4 (det vill säga 4 byte per lång):
ReDim längtar efter (1 till (UBound (byte)) \ 4) Så länge
Nu kan det tyckas vara en hel del problem när du bara kan initialisera matrisen i Form Load-händelsen, men det visar hur man använder en anpassad resurs. Om du hade en stor uppsättning konstanter som du behövde för att initiera matrisen med, skulle den köra snabbare än någon annan metod som jag kan tänka mig och du skulle inte behöva ha en separat fil med din applikation för att göra det.