Kirjautuminen

Haku

Tehtävät

Opasarkisto: Visual Basic: Resurssitiedostot

Kirjoittaja: Antti Laaksonen. Vuosi: 2002.

Huomio! Tämä opas on vanhentunut. Oppaan sisältöön ei voi enää luottaa. Opas on säilytetty vain sen historiallisen arvon vuoksi.

Resurssitiedostoja ('resource files') käyttämällä ohjelman EXE-tiedoston sisään voi upottaa kaikenlaista tietoa: tekstiä, kuvia, ääniä tai mitä tahansa muita tiedostoja. Tämä opas johdattaa resurssitiedostojen käyttöön VB:llä.

Resurssitiedosto projektiin

Tarkista ensin Add-In Managerista (valikosta Add-Ins), että resurssitiedostojen editori, Resource Editor, on valittuna.

Tämän jälkeen Project-valikossa pitäisi olla kohta 'Add New Resource File', jota painamalla VB kysyy uuden resurssitiedoston nimeä.

Nyt projekti-ikkunaan ilmestyy uusi alue, Related Documents, jossa näkyy juuri luotu resurssitiedosto. Resurssitiedoston nimeä klikkaamalla pääsee resurssieditoriin, jossa siihen voi lisätä / poistaa tiedostoja.

Resurssieditori

Resurssieditorista lisätään, poistetaan ja muutetaan ohjelmalle kuuluvia tiedostoja. Valmiiksi määriteltyjä tietotyyppejä ovat merkkijonot, bittikartat (bmp), kuvakkeet ja hiiren osoittimet, tämän lisäksi custom-tyyppinen tieto voi sisältää minkä tahansa tiedoston.

Jokaisella tiedolla on oma yksilöllinen tunnusnumero, id, jonka avulla siihen viitataan koodista. Ylhäällä oleva valikkorivi näyttää seuraavalta:

Kolme ensimmäistä painiketta ovat tiedoston hallintaan liittyviä, neljäs painike tuo näkyviin valitun tiedon ominaisuudet. Seuraavat kolme painiketta ovat tiedon tuplaaminen, edellisen toimenpiteen kumoaminen ja tiedon poistaminen.

Sitten tulevat tiedon lisäämiseen käytettävät painikkeet. Ensimmäinen painike vie merkkijonotaulukkoon, sitten tulevat hiiren osoittimen, kuvakkeen ja bittikartan lisäämiseen käytettävät painikkeet, ja viimeisestä painikkeesta lisätään mikä tahansa tiedosto resurssitiedostoon.

Jos koneelle on asennettu MSDN-kirjasto, viimeinen painike näyttää ohjeen resurssieditorin käytöstä.

Merkkijonotaulukot

Merkkijonotaulukkoja hallitaan omalla editorillaan, jossa on riveittäin tietoa. Jokainen id vastaa yhtä merkkijonoa. Ylärivin painikkeilla lisätään ja poistetaan rivejä ja sarakkeita sekä tuodaan tietoa leikepöydältä.

Merkkijonoihin pääsee koodin kautta käsiksi LoadResString-komennolla. Seuraava esimerkki näyttää merkkijonon 101 sisällön (tässä tapauksessa "Tiedosto"):

MsgBox LoadResString(101)

Merkkijonotaulukkoja käytetään tavallisesti monikielisten ohjelmien tekemisessä: kun kaikki tekstit laitetaan erilliseen tiedostoon, itse ohjelmakoodiin ei tarvitse tehdä muutosta, kun ohjelma käännetään toiselle kielelle.

Kuvat

Bittikarttoja, kuvakkeita ja hiiren osoittimia lisätään resurssitiedostoon ylälaidan painikkeilla. Tuettuja tiedostoformaatteja ovat bmp, ico ja cur, jotka VB pystyy suoraan lataamaan ohjelmaan resurssitiedostosta.

Kuvat ladataan LoadResPicture-funktiolla, jolle annetaan parametriksi kuvan id sekä sen tyyppi, joko vbResBitmap, vbResIcon ja vbResCursor. Esimerkiksi seuraavat funktiokutsut ovat mahdollisia:

Me.Picture = LoadResPicture(101, vbResBitmap)
Me.Icon = LoadResPicture(101, vbResIcon)
Me.MouseIcon = LoadResPicture(101, vbResCursor)

Muut tiedostot

Resurssitiedostoon on mahdollista sisällyttää myös minkä tahansa muun muotoisia tiedostoja, kuten ääniä, musiikkia, toisia ohjelmia jne. Näitä lisätään viimeisestä lisäyspainikkeesta painamalla, ja niille voi määrittää omia ryhmiä, oletuksena "CUSTOM".

Näin lisättyihin tiedostoihin pääsee koodista käsiksi LoadResData-funktiolla, joka ottaa parametrikseen, haettavan tiedoston id:n ja ryhmän. Seuraava käyttökelpoinen aliohjelma tallentaa tiedoston resurssitiedostosta takaisin levylle:

Sub HaeData(id As Integer, ryhma As String, tiedosto As String)
    Dim datat As Byte
    datat = LoadResData(id, ryhma)
    Open tiedosto For Binary As #1
    Put #1, , datat
    Close #1
End Sub

'esimerkki
HaeData 101, "CUSTOM", "c:\testi.exe"

Levylle tallentamisen kautta ohjelma voi siis käyttää mitä tahansa tiedostoja niin, että ne ovat exe-tiedoston sisällä.

Äänet resurssitiedostossa

Jos resurssitiedostossa on äänitiedostoja (.wav), niiden soittaminen onnistuu myös suoraan ilman levylle tallentamista käyttämällä WinApista löytyvää sndPlaySound-funktiota. Seuraava aliohjelma, SoitaAani, soittaa määrätyn äänitiedoston:

'sndPlaySound-funktion määrittely ja vakiot
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long

Private Const SND_ASYNC = &H1
Private Const SND_MEMORY = &H4

Sub SoitaAani(indeksi As Integer, ryhma As String)
    Dim puskuri() As Byte
    puskuri = LoadResData(indeksi, ryhma)
    sndPlaySound puskuri(0), SND_MEMORY Or SND_ASYNC
End Sub

'esimerkki
SoitaAani 101, "AANET"

Loppusanat

Resurssitiedostojen käyttö on hyvin selkeää, joten en katsonut tämän enempää tarpeelliseksi asian ymmärtämiseksi. Jos jotain jäi kuitenkin epäselväksi, kysyä voi keskustelualueella tai minulta sähköpostilla. Myös palaute on tervetullutta.

Kommentit

progo [17.02.2003 08:27:16]

Lainaa #

MAHTAVA! En voi kuvailla muilla sanoilla tätä riemua, kun vihdoin ymmärrän resurssitiedostojen salat! :)

Monkkats [25.09.2003 20:19:56]

Lainaa #

Miten noi resurssi työkalut saa käyttöö ku mul ei oo tollasii?

ZcMander [09.01.2004 15:19:22]

Lainaa #

Miten Käännös vaiheessa saa resursseista iconin kuvakkeeksi ohjelmalle?

miiro [11.01.2004 18:17:51]

Lainaa #

Jippii. Jonkun wizardin kautta löysin tämän, ilman sitä vasta nyt!

Sami M [24.02.2004 18:57:36]

Lainaa #

Miten pääsee tuonne Add-In Manageriin. En löydä sitä mistään.

Laakkonen [12.02.2006 12:50:04]

Lainaa #

ZcMander kirjoitti:

Miten Käännös vaiheessa saa resursseista iconin kuvakkeeksi ohjelmalle?

Tarkoititko näin:
Icon laitetaan ohjelman kuvakkeeksi (Project-valikosta alimmainen "Ohjelma Properties...") ja myös ladataan resurssitiedostona ohjelmaan

vai

Iconi vaihdetaan ohjelman ajon aikana resurssitiedostosta?

Laakkonen [15.03.2006 17:54:36]

Lainaa #

Resurssieditorin käyttöönotto-ongelman yksi ratkaisu

Kokeilkaapa. Tämä toivottavasti toimii.

1. Kirjaudu sisään käyttäjänä, joka asensi VB:n koneeseen

2. Avaa Start -> Run ja runnitaan Regedit.exe

3. Valitse kansio HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\Addins

4. Valitse File -> Export ja kansio, johon kaikilla käyttäjillä on vapaa pääsy

5. Valitse kansio HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\AddinToolbar

6. Valitse jälleen File -> Export ja kansio, johon kaikilla käyttäjillä on vapaa pääsy

7. Kirjaudu ulos.

8. Kirjaudu sisään käyttäjänä jolle haluat resurssieditorin

9. Tuplaklikkaa niitä rekisteritiedostoja jotka tallensit

10. Nyt kaiken pitäisi olla valmista. Kokeile VB:ssä toimiiko

Kirjoita kommentti

Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.

Muista lukea kirjoitusohjeet.
Tietoa sivustosta