Newsgroup: it.comp.programmare.win32
Titolo: Toolbar e bitmap

Ciao,
problema numero 1:
esiste un metodo per controllare la toolbar standard di un documenti SDI
dalla classe CView? Quello che vorrei fare è abilitare o disabilitare un
bottone della toolbar a seconda che durante l'esecuzione del programma si
verifichino o meno certe condizioni (avete presente quando il bottone
incolla è disabilitato e viene abilitato quando si fa un Copia? Mi serve una
cosa del genere), queste condizioni dipendono dai dati contenuti nel
CDocument. Ho visto che la variabile della toolbar (m_wndToolBar) si trova
in CMainFrame ed è protetta: come vi accedo?
problema numero 2:
annoso problema del salvataggio di una bitmap (lo so che è un argomento
complesso). nella classe CDocument ho una matrice che contiene quote sul
livello del mare (una mappa topografica). La mia idea era quella di
suddivere le quote in 10 scaglioni, ad ogni scaglione attribuire una diversa
tonalità di uno stesso colore e salvare la mappa come bitmap su disco.
Qualche suggerimento?
Grazie e ciao
--
Roberto
FV
----------
rob...@messora.com
ICQ# 37732681
----------
Membro di SFI Italy
Simulazioni PBEM di Star Trek
 
http://gioco.net/startrek
(Crusader, Highlander, Unicorn)
----------
Resistance is futile

 wrote in message
9350o3$kao$1...@lacerta.tiscalinet.it...

Per quanto riguarda il problema numero 2 se ho capito bene vuoi salvare
un'immagine bitmap di queste quote. Io ho avuto un problema simile e l'ho
risolto in questo modo:
1) Un bitmap è strutturato come segue :
    BITMAPFILEHEADER
    BITMAPINFOHEADER
    COLOR TABLE
    DATI....
Quindi si deve aprire un file (magari usando un oggetto CFile) e poi
scrivere i dati appena detti
nell'ordine elencato.
2) Quindi io ho creato due strutture BITMAPFILEHEADER e BITMAPINFOHEADER e
mi sono
riempito i campi a mano... (vedi documentazione sull'MSDN)
BITMAPFILEHEADER bmfh;
BITMAPFILEINFO bmfi;
bmfh.campo = ...
ecc.
bmfi.campo = ...
ecc.
3) Il problema è la COLOR TABLE, nel senso che:
- se vuoi salvare un'immagine a 256 colori la color table puoi creartela
così:
RGBQUAD ColorTable[256];
Però poi te la devi riempire A MANO!! Io ero fortunato perchè avevo a che
fare con
un'immagini in toni di grigio, quindi era semplice:
for (i=0; i<256; i++)
{
    ColorTable[i].rgbRed = i;
    ColorTable[i].rgbGreen = i;
    ColorTable[i].rgbBlue = i;
    ColorTable[i].Reserved = 0;
}
- se invece vuoi salvare un'immagine a 24 bit, la color table non serve, non
la devi scrivere nel
file ma allora devi, per ogni quota, salvare una tripla RGB che rappresenta
il colore per tale
quota; può essere lo stesso un bel pò laborioso secondo cosa devi fare..
Spero almeno di averti indirizzato e scusa se sono stato un pò confuso.
Ciao, Max

 Ciao, Max
Fantastico... avevo letto anche io la documentazione su MSDN, ma mi sono
perso, con le tue dritte credo di poter individuare quello che mi serve e
tralasciare il resto, e comunque sono "fortunato": anche io necessito solo
di una scala di grigio o una cosa del genere.
Ciao e grazie


 Qualche suggerimento?
Io disegnerei il tutto su un DC (cosi` puoi usare direttamente le API ed
e` tutto piu` semplice), poi ripperei il codice che trovi su MSDN
nell'articolo "Storing an Image" (e` dentro al platform SDK, nella
reference dei bitmap).
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/

 Bye! Lorenzo Lutti
Grazie molte, volevo porti una domanda a cui non ho trovato risposta vagando
per MSDN: che differenza passa fra COMMAND e UPDATE_COMMAND_UI?
Grazie ancora e ciao.


 UPDATE_COMMAND_UI?
La funzione membro che agganci all'evento COMMAND (con "evento" intendo
gli eventi di MFC) viene chiamata quando premi il pulsante; la funzione
membro associata all'evento UPDATE_COMMAND_UI viene chiamata quando e`
necessario aggiornare lo stato del pulsante.
