Newsgroup: it.comp.lang.visual-basic
Titolo: Trasferimento di immagini tra due programmi

Buon pomeriggio a tutti,
devo trasferire l'immagine presente su una picturebox da un programma ad un 
altro più velocemente possibile ed ho pensato di usare la BitBlt.
Ho scritto un modulino (vedi sotto) che praticamente si limita a wrapparla.
Ho poi creato due programmini di prova ognuno con una Picturebox e con dei 
pulsanti che la "riempiono" con qualcosa.
Ho poi un pulsante con questo codice:
Private Sub Command8_Click()
      Dim ti As Long
      Dim tf As Long
      ti = timeGetTime
     Aggiungi CLng(Trim(Text2.Text)), 0, 0, Picture1.Width, Picture1.Height, 
Me.Picture1.hdc, 0, 0
      Picture1.Refresh ' in realtà questo è inutile....
      tf = timeGetTime
      MsgBox "sono stati utilizzati  " & tf - ti & " millisecondi"
End Sub
Picturebox con autoredraw=false
In Text2 ho ovviamente copiato l'handle di Picture1 di una seconda istanza 
dello stesso programma
Mi aspetto che su Picture 1 del secondo programma venga copiato il contenuto 
di Picture1 del primo ....
Ho anche un pulsante che mi fà il refresh manuale della picturebox..
Ho verificato che "Aggiungi" all'interno del programma (in realtà c'è una 
seconda Pb) funziona ma tra programmi diversi no! eppure la logica mi dice 
che BitBlt dovrebbe servire proprio anche a trasferire dati tra due 
programmi diversi.
Per di più sono abbastanza sicuro di aver provato il meccanismo prima di 
dedicarmi ad altre cose (qualche settimana fà) e mi ricordo che funzionava.. 
poi oggi riprendendolo in mano nulla! temo di aver fatto qualcosa di cui poi 
mi sono dimenticato....
BitBlt fallisce miseramente.dandomi uno 0 come valore di ritorno .. dove sto 
sbagliando? Il mio dubbio è che l'errore sia nell'handle... ho provato ad 
aggiungere in"Aggiungi" un  MsgBox Err.LastDllError & "  " & Err.Description 
con solo un "Falso" come spiegazione e mi sembra poco poco per capire
Qualcuno può illuminare la tenebre?
Grazie
Tullio1248
Codice del Modulo:
'indica l'obbligo di dichiarazione di tutte le variabili
Option Explicit
'comincia l'elenco delle costanti
Public Enum RasterOps
'copia l'immagine primitiva nell'immagine di destinazione
      SRCCOPY = &HCC0020
      'combina i pixel dell'immagine di destinazione con quelli 
'dell'immagine di partenza usando l'operatore Booleano AND
      SRCAND = &H8800C6
      'combina i pixel dell'immagine di destinazione con quelli 
'dell'immagine di partenza usando l'operatore Booleano XOR
      SRCINVERT = &H660046
      'combina i pixel dell'immagine di destinazione con quelli 
'dell'immagine di partenza usando l'operatore Booleano OR
      SRCPAINT = &HEE0086
      'inverte l'immagine di destinazione e la combina con l'immagine di 
partenza usando l'operatore Booleano AND
      SRCERASE = &H4400328
      'rende completamente bianca l'immagine di destinazione
      WHITENESS = &HFF0062
      'rende completamente nera l'immagine di destinazione
      BLACKNESS = &H42
End Enum
'dichiarazioni pubbliche della funzione BitBlt
Declare Function BitBlt Lib "gdi32" ( _
            ByVal hDestDC As Long, _
            ByVal X As Long, _
            ByVal Y As Long, _
            ByVal nWidth As Long, _
            ByVal nHeight As Long, _
            ByVal hSrcDC As Long, _
            ByVal xSrc As Long, _
            ByVal ySrc As Long, _
            ByVal dwRop As RasterOps _
            ) As Long
Public Sub Sovrascrivi(HDest As Long, X0 As Long, Y0 As Long, W As Long, H 
As Long, HSource As Long, X0D As Long, Y0D As Long)
 Dim a As Long
    a = BitBlt(HDest, X0, Y0, W, H, HSource, X0D, Y0D, SRCCOPY)
  MsgBox a
End Sub
Public Sub Aggiungi(HDest As Long, X0 As Long, Y0 As Long, W As Long, H As 
Long, HSource As Long, X0D As Long, Y0D As Long)
      Dim a As Long
    a = BitBlt(HDest, X0, Y0, W, H, HSource, X0D, Y0D, SRCPAINT)
    MsgBox a
End Sub
Public Sub Cancella(HDest As Long, X0 As Long, Y0 As Long, W As Long, H As 
Long)
      BitBlt HDest, X0, Y0, W, H, HDest, X0, Y0, SRCERASE
End Sub 


Non vorrei fare la figura del fesso ...... ma funzione SavePicture non
poteva essere utile?
Ciao Otti.

 ha scritto nel messaggio 
news:1191165789.5...@57g2000hsv.googlegroups.com...
