Problem z kodem robienie screena

0

Witam
Czy zrobiłem w tym kodzie jakiś błąd? Po wywołaniu funkcji program się zatrzymuje.

void screen(HWND Handle, const char *SaveTo)
{
	RECT r;
	GetWindowRect(Handle,&r);\
	TCanvas &WindowCanvas = *new TCanvas();
	Graphics::TBitmap *Bmp = new Graphics::TBitmap;
	TJPEGImage *Jpg = new TJPEGImage();
	WindowCanvas.Handle = GetDC(Handle);
	Bmp->Width =r.right-r.left;
	Bmp->Height =r.bottom-r.top;
	Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), &WindowCanvas,
	Rect(0, 0, Bmp->Width, Bmp->Height));
	Jpg->Assign(Bmp);
	Jpg->SaveToFile(SaveTo);
}
0

mi ten kod działa, tylko zanim to odpaliłem to zamieniłem tą referencję na wskaźnik (drażniła mnie):

void screen(HWND Handle, const char *SaveTo)
{
        RECT r;
        GetWindowRect(Handle,&r);

        TCanvas* WindowCanvas = new TCanvas();
        Graphics::TBitmap *Bmp = new Graphics::TBitmap;
        TJPEGImage *Jpg = new TJPEGImage();

        WindowCanvas->Handle = GetDC(Handle);
        Bmp->Width =r.right-r.left;
        Bmp->Height =r.bottom-r.top;
        Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), WindowCanvas,
        Rect(0, 0, Bmp->Width, Bmp->Height));
        Jpg->Assign(Bmp);
        Jpg->SaveToFile(SaveTo);

        delete Jpg;
        delete Bmp;
        delete WindowCanvas;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  screen(Handle,"C:\\Users\\Admin\\Desktop\\test.jpg");
}
0

Problem rozwiązany, trochę opóźnienie zwiększyłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1