Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB6] OCX che non si dealloca

    salva a tutti, ho creato un piccolo controllo OCX per la visualizzazione di immagini trasparenti.

    le righe di codice saranno pochissime quindi niente di complicato...

    il problema è che quando creo un EXE che sfrutta quell'OCX, quando l'EXE viene chiuso in realtà rimane appesa...

    ovvero viene terminato dai processi ma dal task manager lo vedo ugualmente ancora...

    ho provato a togliere il mio OCX e tutto va bene...

    cosa potrebbe essere???

    grazie.
    Let's your dream came true!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' il tuo ocx ...

    Scherzo ...

    Se non mostri il codice, che risposta pensi di avere ?

  3. #3
    sorry...

    come dicevo il codice è moooolto banale

    codice:
    Option Explicit
    
    Public Property Get MaskColor() As OLE_COLOR
        MaskColor = UserControl.MaskColor
    End Property
    
    Public Property Let MaskColor(ByVal NewValue As OLE_COLOR)
        UserControl.MaskColor = NewValue
        PropertyChanged "MaskColor"
    End Property
    
    Public Property Get Picture() As StdPicture
        Set Picture = UserControl.pic.Picture
    End Property
    
    Public Property Set Picture(ByVal NewValue As StdPicture)
        With UserControl
            Set .pic.Picture = NewValue
            Set .Picture = .pic.Image
            Set .MaskPicture = .pic.Image
        End With
        
        Call CheckResize
        PropertyChanged "Picture"
    End Property
    
    Private Sub CheckResize()
        With UserControl
            If (.pic.Picture = 0) Then
                .imgNoPic.Top = 0
                .imgNoPic.Left = 0
                .Height = .imgNoPic.Height
                .Width = .imgNoPic.Width
                .imgNoPic.Visible = True
            Else
                .imgNoPic.Visible = False
                .Height = .pic.Height
                .Width = .pic.Width
            End If
        End With
    End Sub
    
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
        'READ
        With UserControl
            .MaskColor = PropBag.ReadProperty("MaskColor", Ambient.BackColor)
            Set pic.Picture = PropBag.ReadProperty("Picture", LoadPicture(""))
            Set .Picture = .pic.Image
            Set .MaskPicture = .pic.Image
        End With
        
        Call CheckResize
    End Sub
    
    Private Sub UserControl_Resize()
        Call CheckResize
    End Sub
    
    Private Sub UserControl_Terminate()
        With UserControl
            .Picture = LoadPicture("")
            .pic.Picture = LoadPicture("")
            Set .pic = Nothing
            
            .imgNoPic.Picture = LoadPicture("")
            Set .imgNoPic = Nothing
        End With
    End Sub
    
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
        'WRITE
        Call PropBag.WriteProperty("MaskColor", UserControl.MaskColor, Ambient.BackColor)
        Call PropBag.WriteProperty("Picture", UserControl.pic.Picture, LoadPicture(""))
    End Sub
    grazie dell'aiuto!
    Let's your dream came true!

  4. #4
    il tutto è formato da una PictureBox per ospitare l'immagine e da una ImageBox per ospitare l'immagine di default nel caso non si abia specificato ancora una immagine
    Let's your dream came true!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ho compilato l'ocx, l'ho usato in un progetto che ho compilato a sua volta.

    Ho avviato l'eseguibile e l'ho terminato senza problemi ...

    Forse l'inghippo sta da qualche altra parte del codice ...

  6. #6
    anche io ho fatto svariate prove e soltanto con quell'eseguibile da problemi...

    mannaggia li pescettini...

    se qualcuno ha idee su cosa possa essere fatemi sapere, ciao
    Let's your dream came true!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    fai una End quando chiudi esempio Form_Unload, e vedi se si presenta ancora il problema, cmq dovresti avere qualche oggetto referenziato non distrutto.
    Ans.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti ripeto ... cosi' com'e' l'ocx non c'entra ... sicuramente e' qualche altra parte di codice ...

    Nel programma usi ADO, Excel, Word ... altri componenti?

  9. #9
    nel programma uso moltissime altre cose ma quello che mi fa strano è questo:

    ho il mio bel programma funzionante ma senza il mio controllo.ocx, lo compilo e creo l'eseguibile. avvio l'eseguibile e lo chiudo e tutto va bene.

    ora inserisco nel mio programma (che prima funzionava) il mio controllo. lo compilo, creo l'eseguibile. avvio l'eseguibile, lo chiudo ma nel task manager riesco ancora a vederlo mentre tra i processi il processo con il nome dell'esegubile è già stato terminato...

    come può essere???
    Let's your dream came true!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non e' facile rispondere senza provare personalmente ... mi dispiace.

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.