C'è un modo x realizzare uno splashscreen come fanno molti programmi (esempio: photoshop...) ke sono trasparenti con oggeti ke "escono" dal form???
GRAZIE!!!
![]()
C'è un modo x realizzare uno splashscreen come fanno molti programmi (esempio: photoshop...) ke sono trasparenti con oggeti ke "escono" dal form???
GRAZIE!!!
![]()
Crea un form dallo sfondo di un colore diverso da quello di tutti gli oggetti che conterrà (di solito si usa il violetto) e senza barra del titolo, quindi inseriscici in mezzo un rettangolo (puoi farlo con un controllo frame oppure in mille altri modi differenti) del colore che vuoi ma diverso da quello di sfondo del form. Ora inserisci tutti i controlli che vuoi, tenendo conto del fatto che durante l'esecuzione tutto ciò che sarà del colore di sfondo del form sarà reso trasparente.
A questo punto inserisci nella sezione codice del form:
.codice:Public Function SetLayeredWindowAttributes Lib "user32" (hwnd As Long, crKey As Long, bAlpha As Byte, dwFlags As Long) As Long Const LWA_COLORKEY=1 Const LWA_ALPHA=2 'Effettivamente inutile Public Sub Form_Load() SetLayeredWindowAttributes (Me.hWnd, Me.BackColor, 255, LWA_COLORKEY) End Sub
Amaro C++, il gusto pieno dell'undefined behavior.
Ah, dimenticavo, funziona solamente da Windows 2000 in su. Su versioni più vecchie di Windows si verifica un errore.
Amaro C++, il gusto pieno dell'undefined behavior.
Stavo provando il codice ma ho visto ke mi da degli errori!!!
Mi da errore alla prima riga del codice ke mi hai postato... eppure sembra sia tutto a posto!!!![]()
Ovvero?Originariamente inviato da Scorpion69
Stavo provando il codice ma ho visto ke mi da degli errori!!!![]()
Mi da errore alla prima riga del codice!!!Originariamente inviato da oregon
Ovvero?![]()
Ma quale errore???
Possibile che per ottenere la descrizione dell'errore ci vogliamo 3 messaggi nel forum?
Mi evidenzia "Lib" e mi viene la msgbox ke mi dice
"Errore di compilazione:
Previsto: fine instruzione"
La dichiarazione e' sbagliata ... deve iniziare con
Public Declare Function
se la inserisci in un modulo o
Private Declare Function
se la inserisci in un form
In ogni caso, il codice corretto e'
codice:Private Declare Function GetWindowLong Lib "user32" Alias _ "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias _ "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function SetLayeredWindowAttributes Lib "user32" _ (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, _ ByVal dwFlags As Long) As Long Private Const GWL_EXSTYLE = (-20) Private Const WS_EX_LAYERED = &H80000 Private Const WS_EX_TRANSPARENT = &H20& Private Const LWA_ALPHA = &H2& Private Sub Form_Load() Dim lOldStyle As Long Dim bTrans As Byte ' The level of transparency (0 - 255) bTrans = 128 lOldStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE) SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED SetLayeredWindowAttributes Me.hwnd, 0, bTrans, LWA_ALPHA End Sub