고맙습니다..DC 때문이였군요...
제가 특정한 목적때문에...패널안에 동적인 폼을 생성햐였습니다.
( Form1에 패널(Panel1)생성.. 다시 그패널에 동적인 폼 (Form2)생성 )
목적은 동적으로 생성된 폼을 통째로 이미지로 저장하는것인데...
원치 않는 필요없는 바탕화면들까지 저장이 됩니다..
//패널위에 동적인 폼 생성
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2 (Panel1);
Form2->Parent = Panel1;
Form2->Left = 0;
Form2->Top = 0;
Form2->Width = Panel1->Width;
Form2->Height = Panel->Hight;
Form2->Visible = true;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
//위에서 패널위에 동적으로 생성된 폼(Form2) 을 통째로 저장 하려함.
{
Graphics::TBitmap *p = new Graphics::TBitmap;
HWND B = FindWindow ("TForm2", NULL );
if(B){
p->Width = Panel1->Width;
p->Height = Panel1->Height;
p->PixelFormat = pf24bit;
/*여기서 새로 생성한 폼의 DC를 얻어야 아는데... GetDC (Form2->Handle) 도 틀린것
인가요?
*/
BitBlt(p->Canvas->Handle,0,0,Panel1->Width,Panel1->Height,
GetDC(Form2->Handle) ,Panel1->Left,Panel1->Top,cmSrcCopy);
}
p->SaveToFile("c:\\test.bmp");
delete p ;
}
장성호 님이 쓰신 글 :
: BitBlt에서 Canvas->Handle 을 잘못 주었습니다.
:
:
:
: //Form의 전체 영역 캡쳐
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: Graphics::TBitmap *p = new Graphics::TBitmap;
: p->Width = Form1->Width;
: p->Height = Form1->Height;
: p->PixelFormat = pf24bit;
:
: BitBlt(p->Canvas->Handle,0,0,Form1->Width,Form1->Height, GetDC(0),Form1->Left,Form1->Top,cmSrcCopy);
: p->SaveToFile("c:\\test_form.bmp");
: delete p ;
: }
:
:
: //Form의 client영역만 캡쳐
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
: Graphics::TBitmap *p=GetFormImage();
: p->SaveToFile("c:\\test_form2.bmp");
: delete p ;
: }
:
:
:
:
: 그럼...
:
:
: linuxman 님이 쓰신 글 :
: : 현재의 form을 통째로 이미지로 저장하려는데...
: : 저장은 되기는 되는데... 원치 않는 from 밖의 바탕화면까지
: : 저장되는데.. 왜 이런 현상이 일어나는지요?
: : void __fastcall TForm1::Button8Click(TObject *Sender)
: : {
: : Graphics::TBitmap *p = new Graphics::TBitmap;
: : HWND B = FindWindow ("TForm1", NULL );
: : if ( B )
: : {
: : p->Width = Form1->Width;
: : p->Height = Form1->Height;
: : p->PixelFormat = pf24bit;
: : BitBlt(p->Canvas->Handle,0,0,Form1->Width,Form1->Height,
: : Canvas->Handle ,Form1->Left,Form1->Top,cmSrcCopy);
: :
: :
: : }
: : p->SaveToFile("c:\\test.bmp");
: : delete p ;
: : }