Skapa och använda resurser i Visual Basic 6

click fraud protection

Efter Visual Basic-eleverna lär sig allt om slingor och villkorliga uttalanden och subrutiner och så vidare, en av de nästa saker som de ofta frågar om är: "Hur lägger jag till en bitmapp, en wav-fil, en anpassad markör eller någon annan specialeffekt?" Ett svaret ä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 minsta krångel förpackning och distribution din Ansökan.

Resursfiler finns tillgängliga i både VB 6 och VB.NET, men hur de används, som 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.

Skapa en resursfil i VB 6

Du kan se resurserna i ett projekt i både VB 6 och VB.NET i Project Explorer

instagram viewer
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å Add-In Manager ... 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öd

VB6 stöder följande:

  • En strängbordsredaktör
    ("Redigera strängtabeller ...")
  • Anpassade markörer - "CUR" -filer
    ("Lägg till markör ...")
  • Anpassade ikoner - "ICO" -filer
    ("Lägg till ikon ...")
  • Anpassade bitmappar - "BMP" -filer
    ("Lägg till bitmapp ...")
  • Programmerade resurser
    ("Lägg till anpassad resurs ...")

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 Resursredigeraren 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:

  • LoadResPicture (index, format) för bitmappar, ikoner och markörer

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.

  • LoadResString (index) för strängar
  • LoadResData (index, format) för allt upp till 64K

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 därefter för de andra OptionButton Click-händelserna):

Anpassade resurser

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 du behöver ladda ändra, måste du använda ett mer traditionellt tillvägagångssätt som en sekvensfil som du öppnar och läsa. Det Windows API som vi använder är CopyMemory API. CopyMemory kopierar minnesblock till ett annat minnesblock utan hänsyn till datatypen som är 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:

Dimmigt 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".

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 filen MyLongs.longs 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:

Läs sedan resursfilen:

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):

Nu kan det tyckas vara mycket 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 initiera matrisen med skulle den springa snabbare än någon annan en annan metod jag kan tänka på och du skulle inte behöva ha en separat fil med i din ansökan den.

instagram story viewer