Efter Visual Basic studerende lærer alt om sløjfer og betingede udsagn og underprogrammer osv., Den ene af de næste ting, som de ofte spørger om, er, "Hvordan tilføjer jeg en bitmap, en wav-fil, en brugerdefineret markør eller anden speciel effekt?" En svaret er ressourcefiler. Når du tilføjer en fil ved hjælp af Visual Studio-ressourcefiler, integreres de direkte i dit Visual Basic-projekt for maksimal eksekveringshastighed og mindst besvær emballering og distribution dine Ansøgning.
Ressourcefiler er tilgængelige i både VB 6 og VB.NET, men den måde, de bruges på, ligesom alt andet, er ganske anderledes mellem de to systemer. Husk, at dette ikke er den eneste måde at bruge filer i et VB-projekt på, men det har reelle fordele. For eksempel kan du inkludere en bitmap i en PictureBox kontrol eller brug mciSendString Win32 API. "MCI" er et præfiks, der normalt indikerer en multimediekommando-streng.
Oprettelse af en ressourcefil i VB 6
Du kan se ressourcerne i et projekt i både VB 6 og VB.NET i
Project Explorer vindue (Solution Explorer i VB.NET - de måtte gøre det bare lidt anderledes). Et nyt projekt har ikke noget, da ressourcer ikke er et standardværktøj i VB 6. Så lad os tilføje en simpel ressource til et projekt og se, hvordan det gøres.Trin et er at starte VB 6 ved at vælge a Standard EXE projekt på Ny fanen i startdialogen. Vælg nu Add-Ins på menulinjen, og derefter på Tilføjelsesadministrator ... Dette åbner dialogboksen Add-In Manager.
Rul ned på listen, og find VB 6 Ressource Editor. Du kan bare dobbeltklikke på den, eller du kan sætte et flueben i Loaded / landede for at tilføje dette værktøj til dit VB 6-miljø. Hvis du tror, du vil bruge Resource Editor meget, kan du også placere et afkrydsningsfelt i boksen Indlæs ved opstart og du behøver ikke at gennemgå dette trin igen i fremtiden. Klik på "OK", og ressourcereditoren åbnes. Du er klar til at begynde at tilføje ressourcer til dit projekt!
Gå til menulinjen, og vælg Projekt derefter Tilføj ny ressourcefil eller højreklik bare i ressourceeditoren og vælg "Åbn" i den kontekstmenu, der dukker op. Et vindue åbnes, hvor du bliver bedt om navn og placering af en ressourcefil. Standardplacering vil sandsynligvis ikke være det, du ønsker, så naviger til din projektmappe og indtast navnet på din nye ressourcefil i Filnavn boks. I denne artikel skal jeg bruge navnet "AboutVB.RES" til denne fil. Du skal bekræfte oprettelsen af filen i et verifikationsvindue, og filen "AboutVB.RES" oprettes og udfyldes i ressourceeditoren.
VB6-understøtter
VB6 understøtter følgende:
- En strengtabeleditor
("Rediger strengetabeller ...") - Tilpassede markører - "CUR" -filer
("Tilføj markør ...") - Tilpassede ikoner - "ICO" -filer
("Tilføj ikon ...") - Tilpassede bitmaps - "BMP" -filer
("Tilføj bitmap ...") - Programmerdefinerede ressourcer
("Tilføj tilpasset ressource ...")
VB 6 giver en simpel editor til strenge, men du skal have en fil oprettet i et andet værktøj til alle de andre valg. For eksempel kan du oprette en BMP-fil ved hjælp af det enkle Windows Paint-program.
Hver ressource i ressourcefilen identificeres til VB 6 af en Id og et navn i ressourceeditoren. For at gøre en ressource tilgængelig for dit program skal du tilføje dem i Resource Editor og derefter bruge Id og ressourcen "Type" til at pege på dem i dit program. Lad os tilføje fire ikoner til ressourcefilen og bruge dem i programmet.
Når du tilføjer en ressource, kopieres selve filen til dit projekt. Visual Studio 6 giver en hel samling af ikoner i mappen ...
C: \ Programfiler \ Microsoft Visual Studio \ Common \ Graphics \ Icons
For at følge traditionen vælger vi den græske filosof Aristoteles fire "elementer" - Jorden, vand, luft og ild - fra underkatalogen Elements. Når du tilføjer dem, tildeles ID automatisk af Visual Studio (101, 102, 103 og 104).
For at bruge ikonerne i et program bruger vi en VB 6 "Load Resource" -funktion. Der er flere af disse funktioner at vælge imellem:
- LoadResPicture (indeks, format) til bitmaps, ikoner og markører
Brug de foruddefinerede VB-konstanter vbResBitmap til bitmaps, vbResIcon til ikoner og vbResCursor for markører for parameteren "format". Denne funktion returnerer et billede, som du kan bruge direkte. LoadResData (forklares nedenfor) returnerer en streng, der indeholder de faktiske bit i filen. Vi ser, hvordan vi bruger det, når vi demonstrerer ikoner.
- LoadResString (indeks) til strenge
- LoadResData (indeks, format) for alt op til 64K
Som nævnt tidligere returnerer denne funktion en streng med de faktiske bit i ressourcen. Dette er de værdier, der kan bruges til formatparameter her:
1 Markørressource
2 Bitmap-ressource
3 Ikonressource
4 Menu-ressource
5 Dialogboks
6 Strengressource
7 Ressourcer til fontmappe
8 Skrifttype
9 Acceleratorbord
10 Brugerdefineret ressource
12 Gruppemarkør
14 Gruppeikon
Da vi har fire ikoner i vores AboutVB.RES ressourcefil, lad os bruge LoadResPicture (indeks, format) for at tildele disse til egenskaben Billede af en kommandoknap i VB 6.
Jeg oprettede en applikation med fire OptionButton komponenter mærket Earth, Water, Air and Fire og fire klik-begivenheder - en til hver mulighed. Derefter tilføjede jeg en CommandButton og ændrede egenskaben Style til "1 - Grafisk." Dette er nødvendigt for at kunne tilføje et brugerdefineret ikon til kommandoknappen. Koden for hver OptionButton (og Form Load-begivenheden - for at initialisere den) ser sådan ud (med Id og billedtekst ændret i overensstemmelse hermed for de andre OptionButton Click-begivenheder):
Tilpassede ressourcer
Den "big deal" med brugerdefinerede ressourcer er, at du normalt skal give en måde at behandle dem i din programkode. Som Microsoft siger det, "dette kræver normalt brug af Windows API-opkald." Det er hvad vi gør.
Det eksempel, vi bruger, er en hurtig måde at indlæse en matrix med en række konstante værdier. Husk, at ressourcefilen er inkluderet i dit projekt, så hvis de værdier, du har brug for at indlæse ændre, bliver du nødt til at bruge en mere traditionel tilgang, såsom en sekvensfil, du åbner og Læs. Den Windows API, vi bruger, er CopyMemory API. CopyMemory kopierer hukommelsesblok til en anden hukommelsesblok uden hensyntagen til den datatype, der er gemt der. Denne teknik er VB 6'ers velkendt som en ultrahurtig måde at kopiere data i et program.
Dette program er lidt mere involveret, fordi vi først skal oprette en ressourcefil, der indeholder en række lange værdier. Jeg tildelte simpelthen værdier til en matrix:
Længde dæmpet (10) Så længe
længer (1) = 123456
længer (2) = 654321
... og så videre.
Derefter kan værdierne skrives til en fil, der kaldes MyLongs.longs ved hjælp af VB 6 "Put" -sætningen.
Det er en god ide at huske, at ressourcefilen ikke ændres, medmindre du sletter den gamle og tilføjer en ny. Så ved hjælp af denne teknik bliver du nødt til at opdatere programmet for at ændre værdierne. Hvis du vil inkludere filen MyLongs.longs i dit program som en ressource, skal du tilføje den til en ressourcefil ved hjælp af de samme trin beskrevet ovenfor, men klik på Tilføj tilpasset ressource ... i stedet for Tilføj ikon... Vælg derefter filen MyLongs.longs som den fil, der skal tilføjes. Du skal også ændre ressourceens "Type" ved at højreklikke på den ressource, vælge "Egenskaber" og ændre typen til "længes". Bemærk, at dette er filtypen for din MyLongs.longs-fil.
Hvis du vil bruge den ressourcefil, du har oprettet til at oprette en ny matrix, skal du først erklære Win32 CopyMemory API-opkaldet:
Læs derefter ressourcefilen:
Derefter flyttes dataene fra bytes-arrayen til en matrix med lange værdier. Tildel en matrix for længdeværdierne ved hjælp af heltalværdien for længden af strengen med bytes divideret med 4 (det vil sige 4 bytes pr. Lang):
Nu kan dette virke som en hel masse problemer, når du bare kunne initialisere arrayet i Form Load-begivenheden, men det viser, hvordan du bruger en brugerdefineret ressource. Hvis du havde et stort sæt konstanter, som du havde brug for at initialisere arrayet med, ville det køre hurtigere end nogen anden en anden metode, jeg kan tænke på, og du behøver ikke have en separat fil inkluderet i din ansøgning det.