Newsgroup: it.comp.lang.visual-basic
Titolo: [?] MSDN, TBSTYLE_... e altre costanti

Questa è una precisazione della mia precedente domanda che non ha avuto
risposta: "[?] MSDN".
La domanda è questa: su MSDN trovo ottimi consigli che però fanno
riferimento a costanti il cui valore sembra ignoto.
Tanto per fare nomi, sono curioso di rendere trasparenti le toolbar (come IE
3.0 per capirci) e MSDN dice di settare lo stile con la costante
TBSTYLE_TRANSPARENT (esattamente come dice di usare la costante TBSTYLE_FLAT
per renderle "piatte"). Ovviamente il valore di queste costanti è ignoto.
Frugando un po' a giro ho trovato che TBSTYLE_FLAT = &H800& ma non sono
riuscito a trovare TBSTYLE_TRANSPARENT.
Dovrebbe essere &H8000. Qualcuno me lo conferma?
Inoltre, dove posso trovare un elenco delle costanti (e del loro valore) che
vengono citate in MSDN?
Grazie 1000....
P.S.
Scusate se la mia domanda sembra ovvia, ma ho ricevuto solo ieri (per la
prima volta) MSDN!

Confermo,
Private Const TBSTYLE_TRANSPARENT = &H8000
Solitamente le costanti sono definite nei files.h, questi li trovi nel
VisualC++, mi é capitato alcune volte di trovare che questi files erano
comunque descritti in MSDN, nel dubbio, in MSDN, fai un cerca generale se
non trovi quello che cerchi devi per forza procurarti i files .h
Ciao,
Corrado

Grazie della conferma: ma allora, come mai questo spezzone di codice (che
usa la famigerata costante) non funziona?
Nota: lo stesso codice usando TBSTYLE_FLAT = &H800& funziona benissimo!!!
private sub SetTransparent(TB as toolbar)
    Const TBSTYLE_TRANSPARENT = &H8000
    Dim hwnd As Long
    hwnd = GetWindow(TB.hwnd, GW_CHILD)
    Call SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) Or
TBSTYLE_TRANSPARENT)
end sub

A prima vista il setting dello style TRANSPARENT non modifica la
visualizzazione della toolbar, l'unica cosa da tener presente é che esistono
dei messaggi ben precisi per recuperare/settare lo style della toolbar.
(TB_GETSTYLE/TB_SETSTYLE)
Ecco un piccolo esempio:
    hwnd = GetWindow(Toolbar1.hwnd, GW_CHILD)
    lOldStyle = SendMessage(hwnd, TB_GETSTYLE, 0&, 0&)
    lOldStyle = lOldStyle Or TBSTYLE_FLAT Or CCS_NODIVIDER Or CCS_NORESIZE
Or TBSTYLE_TRANSPARENT
    SendMessage hwnd, TB_SETSTYLE, 0, lOldStyle
    Toolbar1.Refresh
Ciao,
Corrado

Forse sono duro io, ma il tuo esempio non mi funziona nemmeno usando la sola
collaudata TBSTYLE_FLAT = &H800.
Sembra che lo stile non venga nemmeno modificato, in quanto le toolbar
rimangono normalissime...
Tu l'hai mai provata? Ti funziona correttamente?

Yes! VB6-SP1/NT4.0(SP4)
Attenzione che la comctl32 deve essere aggiornata, ovvero devi avere
installato l'update oppure IE4.0.
Comunque mi sembra che sul sito comune ci sia un esempio completo.
Ciao
Corrado

La mia configurazione č:
- Win95 OSR2 con IE 4.01 SP1
- VB5 Enterprise SP3
- comctl32.DLL versione 4.72.3110.1
MSDN dice espressamente che per implementare lo stile TBSTYLE_TRANSPARENT č
necessaria la versione 4.71 o superiore della comctl32. Mi sembra di
rientrarci. Per caso, sono forse necessarie altre librerie?
Altra cosa: ho guardato sul sito comune, ma ho trovato solo un esempio per
implementare Collbar, ma niente che accenni alla trasparenza...

...

L'esempio sul sito non e' per la Coolbar (che e' un controllo differente
dalla toolbar), ma serve per attivare/disattivare lo stato FLAT dei pulsanti
della toolbar.
Hai l'identica configurazione che avevo io quando ho fatto l'esempio che
c'e' sul sito (ora ho installato Win98), quindi non penso che sia quello il
problema.
Cosa dovrebbe fare lo stile TBSTYLE_TRANSPARENT?
--
Roal Zanazzi
z...@iol.it

Questo flag dovrebbe impostare l'effetto che veniva usato sull'IE 3.0.
La toolbar risulta trasparente.
MSDN cita proprio l'esempio di IE 3.0.
Sembra che però non abbia alcun effetto visivo...


Ah, ho capito!!!
La toolbar diventa trasparente e fa vedere l'eventuale immagine di sfondo
della coolbar (in IE3 c'erano quelle linee attorcigliate...)
E non funzia? peccato...
--
Roal Zanazzi
z...@iol.it

Non so se sono necessarie particolari impostazioni. MSDN non dice niente di
particolare a riguardo. Personalmente ho provato usando la stessa routine
usata per settare lo stile FLAT usato la costante TRANSPARENT (&H8000&) e
non funziona. Anzi, si incasina!
Tu c'hai provato?