以下代码可以将当前窗体的客户区(窗体画布)作为一个位图复制到剪贴板
  FormImage := GetFormImage;
  但以上代码只是将窗体的客户区(不包括标题栏)复制到剪贴板,请各位   
  高手指教:怎样才能将整个窗体(包括标题栏和客户区)作为一个位图复制到剪贴板,谢谢!

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      Format: Word;
      Data: Cardinal;
      APalette: HPALETTE;
    begin
      {TBitmap.SaveToClipboardFormat 函数的三个参数都是接受数据用的, 按要求类型定义即可}
      GetFormImage.SaveToClipboardFormat(Format, Data, APalette);
      {放入剪切板}
      Clipboard.SetAsHandle(Format, Data);end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      dc: HDC;
      bmp: TBitmap;
      Format : Word;
      Bitmap : TBitMap;
      Data: THandle;
      Palette: HPALETTE;
    begin
      dc := GetDC(0);
      if dc <> 0 then
      begin
        bmp := TBitmap.Create();
        bmp.Width := Width;
        bmp.Height := Height;    BitBlt(bmp.Canvas.Handle, 0, 0, Width, Height, dc, Left, Top, SRCCOPY);    bmp.SaveToClipboardFormat(Format, Data, Palette);
        Clipboard.SetAsHandle(Format, Data);
        bmp.Free();
        ReleaseDC(0, dc);
      end;
    end;