Has anyone managed to copy and paste the contents of WinForm as MetaFile? I
can copy and paste a 'screen dump' of the Winform. My WinForm has several
ActiveX controls on it - so just Calling OnPaint() with my own Graphics
does not work.

The code to copy and paste a 'screen dump':

[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
  IntPtr hdcDest, // handle to destination DC
  int nXDest,  // x-coord of destination upper-left corner
  int nYDest,  // y-coord of destination upper-left corner
  int nWidth,  // width of destination rectangle
  int nHeight, // height of destination rectangle
  IntPtr hdcSrc,  // handle to source DC
  int nXSrc,   // x-coordinate of source upper-left corner
  int nYSrc,   // y-coordinate of source upper-left corner
  System.Int32 dwRop  // raster operation code
);

private void button4_Click(object sender, System.EventArgs e)
{

  Graphics g1 = this.CreateGraphics();
  Image MyImage = new Bitmap
(this.ClientRectangle.Width,this.ClientRectangle.Height, g1);
  Graphics g2 = Graphics.FromImage(MyImage);
  IntPtr dc1 = g1.GetHdc();
  IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height,
dc1, 0, 0, 13369376);
  g1.ReleaseHdc(dc1);
  g2.ReleaseHdc(dc2);
  Clipboard.SetDataObject(MyImage);

}

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to