Newsgroup: it.comp.lang.visual-basic
Titolo: RichTextBox Trasparente

Ciao a tutti,
ho un problema che niente e nessuno riesce a risolvere:
tempo fa avevo trovato su questo newsgroup un codice che permetteva di 
rendere trasparente un richtextbox (o un textbox semplice, non mi 
ricordo) tramite un API di windows.
Qualcuno di voi saprebbe postarne uno?
BACIONI!!!

 ricordo) tramite un API di windows.
Prova a cercare nel sito Comune, con la chiave "traspar", oppure
gugla un po': 
http://groups.google.com/advanced_group_search
Bye, G.
--
Le risposte alle tue domande sono sul Sito Comune
di questo NewsGroup: 
http://it-lang-vb.net/
... e nell'help in linea !

Non si trova assolutamente niente. Non c'è nulla che funzioni (a parte 
che ho letto certe scempiaggini assurde).
Nessun'altra idea?


 Non si trova assolutamente niente.
prova qui:
http://groups.google.it/groups?hl=it&group=it.comp.lang.visual-basic
Ciao

 che ho letto certe scempiaggini assurde).
cliccando sul link di google ho appena trovato un post con il codice per un
form che con ritocchi minimi qualcosa fa, e anche piu' di qualcosa. cercato,
trovato e provato dopo aver letto il tuo post.
buona ricerca.
j.

 Nessun'altra idea?
Quoting a parte >:-|...
hai cercato sul Sito Comune ? E di quali scempiaggini parli ?
Info, please.
Bye, G.

 Info, please.
Beh, in effetti cercando su 
http://groups.google.com/advanced_group_search
trovi di tutto un po', dai messaggi sui concerti rock alle ricette di
cucina, cose che con VB c'entrano ben poco :)
Ciao

Niente da fare, non trovo niente, e ciň che mi č stato fornito 
(ringrazio tutti) purtroppo non va.
Sto vivendo una crisi :D
HELP!

 ha scritto

codice come trovato via google.
ci vuole qualche minimo ritocco. va, anche se non mi sono fermato ad
approfondire.
utente win/2k e' una presenza del ng che mi manca assai.
j.
Da:"Utente Win2k"
Soggetto:Re: Re: RichTextBox trasparente
Newsgroups:it.comp.lang.visual-basic
View: Complete Thread (4 articles) | Original Format
Data:2001-05-13 10:26:26 PST
Ciao, Prova Con Quanto segue:
Componenti:
Form1(Ovviamente)( impostare la Propiet?AutoRedraw=True)
IMPORTANTE!!!!
RichTextBox(TxTInfo)
P.S
Questa Funzione ?Valida sia Per RichTextBox & TextBox o Similari
=========================
========================
Option Explicit
Dim Evento As Boolean
Private Const DT EDITCONTROL = &H2000&
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function BitBlt Lib "gdi32" (ByVal hDCDest As Long,
ByVal XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal
nHeight As Long, ByVal hDCSrc As Long, ByVal xSrc As Long, ByVal ySrc As
Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal
hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As
RECT, ByVal wFormat As Long) As Long
Sub RendiTrasparente(Oggetto As RichTextBox)
Dim TempDC As Long
Dim Temp As String
Dim Rif Oggetto As RECT
Temp = Oggetto.Text
Rif Oggetto.Left = Oggetto.Left
Rif Oggetto.Top = Oggetto.Top
Rif Oggetto.Right = Rif Oggetto.Left + Oggetto.Width
Rif Oggetto.Bottom = Rif Oggetto.Top + Oggetto.Height
Oggetto.Parent.Cls
'''''''''''Oggetto.Parent.ForeColor = Oggetto.ForeColor ( Questa Riga
se vuoi Utilizzare questa funzione anche per una TextBox )
Set Oggetto.Parent.Font = Oggetto.Font
DrawText Oggetto.Parent.hdc, Temp, Len(Temp), Rif Oggetto,
DT EDITCONTROL
TempDC = GetDC(Oggetto.hWnd)
BitBlt TempDC, 0, 0, Oggetto.Width, Oggetto.Height, Oggetto.Parent.hdc,
Oggetto.Left, Oggetto.Top, vbSrcCopy
End Sub
Private Sub SetTransparenza Click()
RendiTrasparente TXTinfo
Evento = True
End Sub
Private Sub txtInfo Change()
If Not Evento Then Exit Sub
RendiTrasparente TXTinfo
End Sub
Private Sub txtInfo KeyPress(KeyAscii As Integer)
If Not Evento Then Exit Sub
RendiTrasparente TXTinfo
End Sub
Private Sub txtInfo MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If Not Evento Then Exit Sub
RendiTrasparente TXTinfo
End Sub
Fammi Sapere se ?quello che volevi.
Ciao.


Questo codice non funziona

 Questo codice non funziona
1. non si cita un messaggio lungo per una riga di risposta.
2. funziona.
j.


chiedo scusa.
Cmq a me non funziona nella maniera piů assoluta. Perchč non posti uno 
zip con i file che a te funzionano?
Io ho provato ad aggiustarlo un po' ma non andava, ovvero non faceva 
assolutamente niente.

 assolutamente niente.
non si postano binari sul ng, e comunque il mio server non me li
accetterebbe.
sei troppo di fretta, giovane skywalker. rischi di arrenderti al lato oscuro
del codice.
io l'ho trovato un utile esercizio. ed ero al lavoro, quindi l'ho fatto
abbastanza distrattamente. qui sotto c'e' il codice ritoccato. se vuoi un
comportamente stabile mi sa che devi lavorarci ancora, ma l'idea e' quella.
oltre a quello che dice uw2k, ho messo sul form un command chiamandolo
SetTrasparenza, perche' non mi spiegavo altrimenti l'evento _click. i
ritocchi riguardano un po' di underscore che google si mangia, e che ora ti
risparmi, oltre ovviamente a ricomporre le line, cosa che invece dovrai fare
comunque causa newsserver.
comunque: sto usando win2k anch'io. non l'ho provato su altri windows.
j.
'Da:"Utente Win2k" (
vrtec...@galactica.it
)
'Soggetto: Re: Re: RichTextBox trasparente
'Newsgroups: it.comp.lang.visual -basic
'View: Complete Thread (4 articles) | Original Format
'Data:2001-05-13 10:26:26 PST
'
'
'Ciao, Prova Con Quanto segue:
'
'Componenti:
'Form1(Ovviamente)( impostare la Propiet?AutoRedraw=True)
'IMPORTANTE!!!!
'RichTextBox (txtInfo)
'P.S
'Questa Funzione ?Valida sia Per RichTextBox & TextBox o Similari
Option Explicit
Dim Evento As Boolean
Private Const DT_EDITCONTROL = &H2000&
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function BitBlt Lib "gdi32" (ByVal hDCDest As Long, ByVal
XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight As
Long, ByVal hDCSrc As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal
dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc
As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal
wFormat As Long) As Long
Sub RendiTrasparente(Oggetto As RichTextBox)
Dim TempDC As Long
Dim Temp As String
Dim Rif_Oggetto As RECT
Temp = Oggetto.Text
Rif_Oggetto.Left = Oggetto.Left
Rif_Oggetto.Top = Oggetto.Top
Rif_Oggetto.Right = Rif_Oggetto.Left + Oggetto.Width
Rif_Oggetto.Bottom = Rif_Oggetto.Top + Oggetto.Height
Oggetto.Parent.Cls
'''''''''''Oggetto.Parent.ForeColor = Oggetto.ForeColor ( Questa Riga se
vuoi Utilizzare questa funzione anche per una TextBox )
Set Oggetto.Parent.Font = Oggetto.Font
DrawText Oggetto.Parent.hdc, Temp, Len(Temp), Rif_Oggetto, DT_EDITCONTROL
TempDC = GetDC(Oggetto.hWnd)
BitBlt TempDC, 0, 0, Oggetto.Width, Oggetto.Height, Oggetto.Parent.hdc,
Oggetto.Left, Oggetto.Top, vbSrcCopy
End Sub
Private Sub SetTransparenza_Click()
    RendiTrasparente txtInfo
    Evento = True
End Sub
Private Sub txtInfo_Change()
    If Not Evento Then Exit Sub
    RendiTrasparente txtInfo
End Sub
Private Sub txtInfo_KeyPress(KeyAscii As Integer)
    If Not Evento Then Exit Sub
    RendiTrasparente txtInfo
End Sub
Private Sub txtInfo_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    If Not Evento Then Exit Sub
    RendiTrasparente txtInfo
End Sub

Devo ammettere che questo funziona, ma non capisco cosa hai fatto per 
farlo funzionare.
Io avevo aggiunto degli _ dove mancavano, avevo (ovviamente) tolto gli 
accapo errati e poi avevo creato i due controllo(commandbutton e 
richtext) nominandoli come nelle funzioni.
Dove sbagliavo?
Cmq sei un mostro di sapienza :D

 Cmq sei un mostro di sapienza :D
no. di pazienza :P
j.

Eheh!
Cmq ho una bella notizia: il codice non va bene :).
In realtà questo coso più che rendere il richtextbox trasparente disegna 
il suo contenuto sul form (o comunque sull'oggetto parent).
Il problema è che naturalmente questo lo fa a discapito dello scrolling 
e dei font in generale. Anche modificando la sub non è possibile avere 
quello che mi serve.
A questo punto ti racconto anche cosa devo fare: hai presente i titoli 
di coda dei film? Devo fare scorrere un qualcosa con le scritte, solo 
che nel fondo c'è un'immagine (e questo mi fotte).
Usare tutta una serie di label trasparenti mi pare una cosa seccante e 
dispendiosa, sebbene possibile. Cercavo un modo più semplice, come 
(appunto) fare salire un richtextbox con un'adeguata altezza.
Tu hai qualche idea?

Tu hai qualche idea?
Il richtext e' l' oggetto sbagliato per fare quello che hai in mente :-(
Ti serve una picture e vai di print in xor.
-- 
ciao, hal

Mi sono accorto che poco fa ho detto una lamerata, non avevo visto bene. 
comunque il concetto l'ho reso :)

 
E i font? I diversi colori? Le diverse dimensioni dei font?
Come faccio??

Come faccio??
Leggersi la guida, come si fa?
-- 
ciao, hal
ma che domande!

 
Ammesso che si possa fare, e la trasparenza?
Non ci sto capendo niente...

 Tu hai qualche idea?
se la montagna...
scorrili in orizzontale in una sola etichetta.
quando avevo provato qualcosa del genere, il risultato era discreto.
calcola solo font dimensione e velocita' perche' ogni blocco che si vede sia
leggibile. quando in tv li fanno correre troppo divento idrofobo.
ciao, j.

> scorrili in orizzontale in una sola etichetta.
BLEAHHHHHH!!!!
:)

scorrili in orizzontale in una sola etichetta.
Elementare, Watson!
Come ho fatto a non pensarci ;-)
-- 
ciao, hal

 :)
allora soffri, giovane skywalker
j.im:Peratore


Hei Hei Calma....
Sono Tornato
Neache a Farlo a Posta Questa Sera (Molto Tardi) Ho Avuvo un po di Tempo
Libero
e mi sono detto , perche non Visitare il NG. ( è un pò di tempo che non lo
visitavo)
cmq è un Problema Risolvibile con 3 Righe di Codice ....
Bando alle ciancie
Posiziona un Controllo Image1 sul tuo Form (Setta La propietà Picture con
un'immagine)
posizionaci Sopra i lcontrollo MS Richedit ...
Il Gioco è Fatto !!!!
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const STILE = (-20)
Private Const TRASPARENTE = &H20&
Private Sub Form_Load()
    Dim Trasparenza As Long
    Trasparenza = SetWindowLong(Rich.hwnd, STILE, TRASPARENTE)
End Sub
By Utente Win2k

 Sono Tornato
cerca di rimanere :)
j.
ps - strano, a questo punto ti facevo utente winxp. non ti sei attivato ? :P

 ps - strano, a questo punto ti facevo utente winxp. non ti sei attivato ? :P
Seriamente: tu scambieresti un W2K per un XP ?

 Seriamente: tu scambieresti un W2K per un XP ?
se tu=io, come si dice qui in questa quasi eufonica lingua
gallo-borborigmica:
a'n'ghe dobi.
passo a xp quando ho voglia di una slotmachine. o quando mi costringono con
la distruzione fisica di tutti i w2k.
se tu=utente win2k, il fatto che non abbia upgradato il nick mi da' adito a
un sospetto. ma mi piacerebbe sentire lui.
ciao, a.

 un sospetto. ma mi piacerebbe sentire lui.
Rilancio... mi piacerebbe sentire lui e anche gli altri.
Hal direi si sia già espresso.
Bye, G.
--
P.S.: cosa chiede un programmatore VB al bar ?
Un "SantHal" ;-)

 Rilancio... mi piacerebbe sentire lui e anche gli altri.
Dico io...
Prima: Windows NT 4.0
Dopo : Windows 2000
Dopo : Windows 2000 Spk100 rev1.05c
(per Quanto Riquarda il Look Grafico dei Controlli STile XP, ho già risolto,
creandomi
Controlli Propietari(ComboBox,ProgressBar,StatusBar,CommandButton...)
By Utente Win2k

Win2K il tuo esempio non mi funziona...
Non mi rende il rtb trasparente, gli toglie solo i bordi...

 Non mi rende il rtb trasparente, gli toglie solo i bordi...
Non per dire ma Utente Win2K mi inviò un suo codice via mail per il RT
trasparente quasi 4/5 mesi fa' e già funzionava ma con dei limiti...
Ora, con quelle 4 righe di codice ultimamente postate si ottiene la
trasparenza in maniera perfetta ...
ehm..ehm... mi sorge un dubbio...
Stai usando Visual Basic?
Ciao
_pixel_
p.i....@katamail.com
http://vbios.cjb.net

Devo avere qualche problema con windows, perchè le api non mi funzionano 
bene, e ogni tanto crasha tutto. Cmq ho risolto in maniera alternativa.
