Dopo che gli studenti di Visual Basic hanno appreso tutto sui loop, le dichiarazioni condizionali e le subroutine e così via, una delle prossime le cose che spesso chiedono sono: "Come faccio ad aggiungere una bitmap, un file wav, un cursore personalizzato o qualche altro effetto speciale?" Uno la risposta è file di risorse. Quando si aggiunge un file utilizzando i file di risorse di Visual Studio, questi vengono integrati direttamente nel progetto Visual Basic per la massima velocità di esecuzione e il minimo fastidio confezionamento e distribuzione il tuo applicazione.
I file di risorse sono disponibili in VB 6 e VB.NET, ma il modo in cui vengono utilizzati, come tutto il resto, è leggermente diverso tra i due sistemi. Tieni presente che questo non è l'unico modo per utilizzare i file in un progetto VB, ma presenta vantaggi reali. Ad esempio, è possibile includere una bitmap in a PictureBox controllare o utilizzare il mciSendString API Win32. "MCI" è un prefisso che di solito indica una stringa di comando multimediale.
Creazione di un file di risorse in VB 6
È possibile visualizzare le risorse in un progetto in VB 6 e VB.NET in Esplora progetti finestra (Esplora soluzioni in VB.NET - dovevano renderlo leggermente diverso). Un nuovo progetto non ne avrà nessuno poiché le risorse non sono uno strumento predefinito in VB 6. Quindi aggiungiamo una semplice risorsa a un progetto e vediamo come viene fatto.
Il primo passo è avviare VB 6 selezionando a EXE standard progetto sul Nuovo scheda nella finestra di avvio. Ora seleziona il Componenti aggiuntivi opzione sulla barra dei menu, quindi l'opzione Gestione componenti aggiuntivi ... Questo aprirà la finestra di dialogo Gestione componenti aggiuntivi.
Scorri l'elenco verso il basso e trova Editor risorse VB 6. Puoi semplicemente fare doppio clic o inserire un segno di spunta in Carico / scarico box per aggiungere questo strumento al tuo ambiente VB 6. Se pensi di utilizzare molto l'Editor risorse, puoi anche inserire un segno di spunta nella casella Carica all'avvio e non dovrai ripetere questo passaggio in futuro. Fai clic su "OK" per aprire l'Editor delle risorse. Sei pronto per iniziare ad aggiungere risorse al tuo progetto!
Vai alla barra dei menu e seleziona Progetto poi Aggiungi nuovo file di risorse oppure fai clic con il pulsante destro del mouse nell'Editor delle risorse e seleziona "Apri" dal menu contestuale che si apre. Si aprirà una finestra che richiede il nome e il percorso di un file di risorse. La posizione predefinita probabilmente non sarà quella che desideri, quindi vai alla cartella del tuo progetto e inserisci il nome del tuo nuovo file di risorse in Nome del file scatola. In questo articolo, userò il nome "AboutVB.RES" per questo file. Dovrai confermare la creazione del file in una finestra di verifica e il file "AboutVB.RES" verrà creato e compilato nell'Editor delle risorse.
Supporti VB6
VB6 supporta quanto segue:
- Un editor di tabelle di stringhe
("Modifica tabelle stringhe ...") - Cursori personalizzati: file "CUR"
("Aggiungi cursore ...") - Icone personalizzate - File "ICO"
("Aggiungi icona ...") - Bitmap personalizzate: file "BMP"
("Aggiungi bitmap ...") - Risorse definite dal programmatore
("Aggiungi risorsa personalizzata ...")
VB 6 fornisce un semplice editor per le stringhe ma devi creare un file in un altro strumento per tutte le altre scelte. Ad esempio, è possibile creare un file BMP utilizzando il semplice programma Windows Paint.
Ogni risorsa nel file di risorse è identificata in VB 6 da un Id e un nome nell'editor delle risorse. Per rendere una risorsa disponibile per il programma, è necessario aggiungerle nell'Editor risorse e quindi utilizzare l'ID e la risorsa "Tipo" per puntare a loro nel programma. Aggiungiamo quattro icone al file di risorse e usiamole nel programma.
Quando aggiungi una risorsa, il file vero e proprio viene copiato nel tuo progetto. Visual Studio 6 fornisce un'intera raccolta di icone nella cartella ...
C: \ Programmi \ Microsoft Visual Studio \ Common \ Graphics \ Icons
Per seguire la tradizione, selezioneremo i quattro "elementi" del filosofo greco Aristotele, Terra, Acqua, Aria e Fuoco, dalla sottodirectory Elements. Quando li aggiungi, l'ID viene assegnato automaticamente da Visual Studio (101, 102, 103 e 104).
Per utilizzare le icone in un programma, utilizziamo la funzione "Carica risorse" di VB 6. Esistono diverse di queste funzioni tra cui scegliere:
- LoadResPicture (indice, formato) per bitmap, icone e cursori
Utilizzare le costanti predefinite VB vbResBitmap per bitmap, vbResIcon per le icone e vbResCursor per i cursori per il parametro "formato". Questa funzione restituisce un'immagine che è possibile utilizzare direttamente. LoadResData (spiegato di seguito) restituisce una stringa contenente i bit effettivi nel file. Vedremo come usarlo dopo aver dimostrato le icone.
- LoadResString (indice) per archi
- LoadResData (indice, formato) per qualsiasi cosa fino a 64 KB
Come notato in precedenza, questa funzione restituisce una stringa con i bit effettivi nella risorsa. Questi sono i valori che possono essere usati per il parametro format qui:
1 risorsa cursore
2 risorsa bitmap
3 Icona risorsa
4 risorsa menu
5 Finestra di dialogo
6 risorsa stringa
7 Risorsa della directory dei caratteri
8 Risorsa carattere
9 Tabella acceleratori
10 Risorsa definita dall'utente
12 Cursore di gruppo
14 Icona del gruppo
Dal momento che abbiamo quattro icone nel nostro file di risorse AboutVB.RES, usiamo LoadResPicture (indice, formato) per assegnarli alla proprietà Picture di un CommandButton in VB 6.
Ho creato un'applicazione con quattro OptionButton componenti etichettati Terra, Acqua, Aria e Fuoco e quattro eventi Click - uno per ogni opzione. Quindi ho aggiunto a Pulsante di comando e ha cambiato la proprietà Style in "1 - Graphic". Ciò è necessario per poter aggiungere un'icona personalizzata al CommandButton. Il codice per ogni OptionButton (e l'evento Form Load - per inizializzarlo) è simile al seguente (con ID e didascalia modificati di conseguenza per gli altri eventi Click di OptionButton):
Risorse personalizzate
Il "grosso problema" con le risorse personalizzate è che normalmente è necessario fornire un modo per elaborarle nel codice del programma. Come Microsoft afferma "questo di solito richiede l'uso di chiamate API di Windows". Questo è quello che faremo.
L'esempio che useremo è un modo rapido per caricare un array con una serie di valori costanti. Ricorda che il file di risorse è incluso nel tuo progetto, quindi se i valori che devi caricare cambiare, dovrai usare un approccio più tradizionale come un file sequenziale che apri e leggere. L'API di Windows che useremo è la CopyMemory API. CopyMemory copia il blocco di memoria in un diverso blocco di memoria indipendentemente dal tipo di dati in esso memorizzato. Questa tecnica è ben nota ai VB 6 come un modo ultra veloce per copiare i dati all'interno di un programma.
Questo programma è un po 'più coinvolto perché prima dobbiamo creare un file di risorse contenente una serie di valori lunghi. Ho semplicemente assegnato valori a un array:
Dim longs (10) As Long
longs (1) = 123456
longs (2) = 654321
... e così via.
Quindi i valori possono essere scritti in un file chiamato MyLongs.longs usando l'istruzione VB 6 "Put".
È una buona idea ricordare che il file di risorse non cambia a meno che non si elimini quello vecchio e si aggiunga uno nuovo. Quindi, usando questa tecnica, dovresti aggiornare il programma per cambiare i valori. Per includere il file MyLongs.longs nel tuo programma come risorsa, aggiungilo a un file di risorse usando gli stessi passaggi sopra descritti, ma fai clic sul Aggiungi risorsa personalizzata ... invece di Aggiungi icona... Quindi selezionare il file MyLongs.longs come file da aggiungere. Devi anche cambiare il "Tipo" della risorsa facendo clic con il tasto destro su quella risorsa, selezionando "Proprietà" e cambiando il Tipo in "longs". Nota che questo è il tipo di file del tuo file MyLongs.longs.
Per utilizzare il file di risorse creato per creare un nuovo array, dichiarare innanzitutto la chiamata API WinM CopyMemory:
Quindi leggi il file di risorse:
Quindi, spostare i dati dall'array di byte in un array di valori lunghi. Allocare una matrice per i valori long utilizzando il valore intero della lunghezza della stringa di byte divisa per 4 (ovvero 4 byte per lunghezza):
Ora, questo può sembrare un sacco di problemi quando è possibile inizializzare l'array nell'evento Caricamento modulo, ma dimostra come utilizzare una risorsa personalizzata. Se si disponesse di un ampio set di costanti con cui era necessario inizializzare l'array, funzionerebbe più velocemente di qualsiasi altro un altro metodo che mi viene in mente e non dovresti avere un file separato incluso con la tua applicazione da fare esso.