Stavo tentando, in VC++ .NET 2003, il contenuto di una System::Windows::Forms::PictureBox (pBox1) in un'altra (pBox2) usando la funzione API BitBlt. Ecco il codice che ho usato:
codice:
Graphics *gSorg = pBox1->CreateGraphics();
Graphics *gDest = pBox2->CreateGraphics();
//reperisce gli HDC necessari per BitBlt
HDC dc1 = (HDC)gSorg->GetHdc().ToPointer();
HDC dc2 = (HDC)gDest->GetHdc().ToPointer();
//fa la copia
BitBlt(dc2, 0, 0, pBox1->Width, pBox1->Height, dc1, 0, 0, SRCCOPY);
gSorg->ReleaseHdc(dc1);
gDest->ReleaseHdc(dc2);
Il risultato, abbastanza assurdo, è che il contenuto di pBox1 viene copiato... assieme a quello che la copre! Se, ad esempio, sovrappongo in parte un pulsante a pBox1, in pBox2 apparirà anche la parte del pulsante sovrapposta.