Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6]Form semi-trasparente senza modificare i controlli

    Ciao a tutti.

    Sto cercando di rendere un form semi-trasparente usando questo codice:
    codice:
    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 GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    
    Private Declare Function SetLayeredWindowAttributes Lib "user32" _
    (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags _
    As Long) As Long
    
    Private Const LWA_ALPHA = &H2&
    Private Const GWL_EXSTYLE = (-20)
    Private Const WS_EX_LAYERED = &H80000
    
    Private Sub Phantom(hwnd As Long, bytOpacity)
        'Form Semitrasparente
        Dim buf As String * 1024
        Call SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong _
        (hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
        Call SetLayeredWindowAttributes(hwnd, 0, bytOpacity, LWA_ALPHA)
    End Sub
    
    Private Sub Form_Load()
        Phantom Me.hwnd, 220
    End Sub
    Questo codice però, non essendo farina del mio sacco, non mi da a pieno i risultati voluti.
    Vorrei poter rendere solo l'area del form semi-trasparente, lasciando immutata la barra del titolo e tutti gli altri controlli presenti sul form, che in seguito alla chiamata alla funzione Phantom (...) risultano semi-trasparenti anch'essi.

    Come si risolve il problema? Confido in una vostra risposta e ringrazio anticipatamente.

    Ciao
    Pray your God or burn in my Hell

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    La strada da seguire è completamente diversa.
    Vedi questo progetto su Visual Basic Tips & Tricks
    TrasparentForm
    http://www.visual-basic.it/scarica.asp?ID=38

  3. #3
    L'ho visto, ma non è quello che voglio ottenere...

    Vorrei che l'area del form, quella delimitata dalla barra del titolo e dai bordi della finestra, diventasse semi-trasparente (o con effetto opacity) mentre in quel progetto alcune aree diventano proprio invisibili.

    Infine, tutti i controlli all'interno del form devono risultare perfettamente visibili, senza alcuna trasparenza...

    Come si fa??
    Pray your God or burn in my Hell

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non si fa.

    Devi scegliere: o la botte piena, o la moglie ubriaca...

  5. #5
    Originariamente inviato da gibra
    Non si fa. Devi scegliere: o la botte piena, o la moglie ubriaca...
    A mali estremi, estremi rimedi: opterò per la moglie ubriaca

    Comunque vorrei un consiglio: se rendo l'intero form invisibile (la mia bella mogliettina ),
    1. rimane la barra del titolo ed i bordi?
    2. inserendo una immagine PNG semi-trasparente in un controllo Image sul form invisibile, riesco a vedere cosa c'è sotto l'area occupata dall'immagine? (so che è una domanda contorta ma cerca di capire cosa intendo )
    Pray your God or burn in my Hell

  6. #6

  7. #7
    Ciao.

    Ho provato ma non funziona; Quindi ho pensato di cambiare tattica: mi ritaglio un'area del form e rendo solo quella semi-trasparente.

    L'idea sarebbe quella di selezionare regioni del form usando le API CreateRectRgn e similari, combinarle insieme e sfruttare (spero di non dire cavolate ) un qualche valore hWnd dell'oggetto-regione selezionato per usare poi il codice postato da me rendendo quell'area semi-trasparente.

    Il punto è che non ho ben capito:
    1. come ritagliare l'area del form tutt'attorno ai controlli e reincollare i vari pezzi.
    2. sempre se non è fantascienza, ricavare l'hWnd di quell'area.

    Mi sai aiutare? Magari anche commentando il codice al link (per iniziare a risolvere il punto 1), per il resto sto proprio a zero...

    So di essere fastidioso , ma questa è l'ultima cosa che mi manca da fare per finire una mia applicazione.

    Grazie.
    Pray your God or burn in my Hell

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.