Newsgroup: it.comp.lang.visual-basic
Titolo: immagini nei menu

sto provando a usare questo codice preso se non sbaglio da un esempio sul SC
per inserire immagini nei menu.
l'immagine è un file .ico
Dim hMenuBarra As Long
Dim hMenuPrimo As Long
hMenuBarra = GetMenu(Form1.hwnd)
Debug.Print hMenuBarra
hMenuPrimo = GetSubMenu(hMenuBarra, 0)
Debug.Print hMenuPrimo
ris = SetMenuItemBitmaps(hMenuPrimo, 0, MF_BYPOSITION, ByVal
CLng(Picture1.Picture), ByVal CLng(Picture1.Picture))
ris = SetMenuItemBitmaps(hMenuPrimo, 1, MF_BYPOSITION, ByVal
CLng(Picture1.Picture), ByVal CLng(Picture1.Picture))
lo eseguo, non mi da errori durante l'esecuzione, ma non viene inserito
niente.
il codice non dovrebbe servire a inserire le immagini a sinistra della
scritta della voce di menu?
grazie
MarioH

 CLng(Picture1.Picture), ByVal CLng(Picture1.Picture))
prova cosi'
ris = SetMenuItemBitmaps(hMenuPrimo, 0, MF_BYPOSITION,
Picture1(1).Picture.Handle, Picture1(1).Picture.Handle)


e se non ho un array di picture? funziona lo stesso?
senti poi mi sorge un altro dubbio. fosse sbagliato il formato della
picture? io ho prelevato delle icone dal web, come faccio a sapere se vanno
bene, da inserire nei menu? magari sono troppo grand, vanno convertite,
ridotte che ne so... ma come si fa?
grazie
MarioH

 ha scritto nel messaggio
news:9k0m5v$1v4jt$1...@ID-70152.news.dfncis.de...


 VB
ho provato imageedit.
ho caricato un'icona gia esistente. è 16 x 16 (infatti nel menu viene
tagliuzzata i bordi...).
come faccio a ridurla a 13 x 13 ?
grazie mille
MarioH

io per ridurle avevo caricato
due istanze di imagedit , una con l'icona che
mi serviva ed una impostata con una nuova icona da 16X16
e me le sono  ridisegnate facendo attenzione a lasciare
liberi 3 pixel a destra ed in basso,
poi pero' vedo che in giro ci sono degli esempi per mettere
le icone nei menu'  con un quadratino tridimensionale
che al passaggio del mouse non viene selezionato e
sono molto belli
ciao

 sono molto belli
ah, e quali sono questi esempi? io finora ho trovat osolo esempi che non
funzionano, aihme... ::))))
MarioH

 ha scritto nel messaggio
news:9k10nc$1u9g5$1...@ID-70152.news.dfncis.de...

Ti consiglio di guardare sul sito comune, c'è un ottimo
esempio di MrFreeze per fare esattamente quello che vuoi tu.
Per trovarlo puoi cercare menu o owner-drawn.
ciao
--------------------------------------------------------------------
Assa (Gabriele Genta)
WebMaster del "Sito Comune dei militanti del newsgroup
it.comp.lang.visual-basic"
http://www.it-lang-vb.net

 MarioH
Ciao,
scusa ho seguito anch'io il thread.....volevo sapere se hai risolto in
qualche modo ....Io avevo scaricato dapprima l'esempio del SC
..........praticamente quell che hai postato tu.......a niente........ poi
ho scaricato l'esempio (sempre dal SC) consigliato da "Assa".....ma ahime'
e' troppo complicato.....possibile che non ci sia qualcosa di piu' semplice
giusto per iniziare?
ciao
e.

'Questo codice in un modulo
Public Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal
nPos As Long) As Long
Public Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As
Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked
As Long, ByVal hBitmapChecked As Long) As Long
Public Const MF_BYPOSITION = &H400&
'Questo codice nel form load
hMenuBarra = GetMenu(Form1.hWnd)
hMenuPrimo = GetSubMenu(hMenuBarra, 0)
ris = SetMenuItemBitmaps(hMenuPrimo, 0, MF_BYPOSITION,
Picture1.Picture.Handle, Picture1.Picture.Handle)
ris = SetMenuItemBitmaps(hMenuPrimo, 1, MF_BYPOSITION,
Picture2.Picture.Handle, Picture2.Picture.Handle)
'Le icone devono essere di 13X13, mi sembra molto semplice
"elio" <not...@you.gk> ha scritto nel messaggio
news:9k1ctv$los$1...@nreadB.inwind.it...


 'Le icone devono essere di 13X13, mi sembra molto semplice
Ciao,
grazie per la risposta..........solo che questo codice io l'ho gia provato
(e riprovato anche stamane).....ma a me non funziona:
Non mi da errore ma non mi visualizza nemmeno le icone (diciamo che ha un
comportamento neutrale...)
Dunque le icone sono in formato 13*13 e sono rappresentate da un array
image1(0), image2(0), ecc, nel codice ho sostituito "Picture1" con
image1(0), e picture2 con image1(1), ma niente.....ne errore ne
visualizzazione icone (a colori).
Ho anche provato ad inserire l'image in una picturebox ed a passare
quest'ultima come picture1 ma il risultato non cambia  :-(
Sicuramente e' semplice.....ma per ora non funziona!!!
Se hai qualche suggerimento in merito
e.

 comportamento neutrale...)
Beh, devi tener conto che le chiamate alle API non generano errori in vb,
ma rimandano dei codici di errore, quindi per sapere se la tua operazione
è andata a buon fine devi verificare ciò che rimanda la chiamata alla
funzione.
ciao, Assa.

scritta della voce di menu?
CUT
Se ti interessa io possiedo un sorgente (non so piů dove lo ho preso) che fa
proprio quello che dici tu solo che permette di inserire non solo immagini
ma anche checkbox,button, ecc. Se vuoi te lo invio, ti awiso perň che č
molto piů complesso di quello che possiedi tu.
Saluti
BelthaZor

 molto più complesso di quello che possiedi tu.
mmmmmmmmmm se è piu complesso figurati se ci capisco qualcosa... ::))))
mi sembra davvero assurdo che sia tutto cosi complicato... cmq ho scritto un
nuovo thread sull'argomento...(verso le 20:30 del 30/7) in cui annuncio il
mio passaggio ai controlli di VbAccelerator... ovviamente anche lì ho avuto
e sto avendo problemi... che strazio !!!!!
MarioH

elio ha scritto:

Che sappia io ci sono due modi per inserire immagini in un menu'.
Utilizzare le funzioni indicate da MarioH nel post originale.
Questo pero' ha delle limitazioni, come le icone max 13x13.
Effettuare il subclassing per poter utilizzare i menu owner-draw
ossia intercetti un particolare messaggio e su questi ti occupi tu
di disegnare il menu'. E questo e' l'esempio indicato da Assa.
Tuttavia una volta avevo trovato in rete un programma in cui tutto
il codice complicato era racchiuso in delle classi compilate in una
DLL ActiveX.
Io ho ancora qui la DLL e un programma di esempio di utilizzo, ma
non ricordo da dove l'ho presa, ho anche fatto delle ricerche
ultimamente, ma non sono piu' riuscito a trovarla.
-- 
Samuele Battarra
mail server: 
libero.it
, indirizzo: battarsa@(mail server)
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

 mi sembra davvero assurdo che sia tutto cosi complicato...
Magari il codice non lo capisci dal tutto ma a modificarlo a tuo piacimento
penso che ci riesci.
BelthaZor