|
delete Capture14 , JPEGIMAGE14 는 FormClose 시 해주었습니다.
ReleaseDC(0, DC14); 를 제일 마지막줄에 넣어주면 되나요. 아님 어디에...
그리고 사용하는 OS 는 Win XP Professional 입니다.
그리고 아래말이 정확히 이해가 안되는데요. GetDC(0) 를 ForeCreate시 한번만 해주어도 됩니까..
계속 캡쳐할때마다 반복적으로 안해주어도 되고요...
쓰레드 안에 GetDC를 넣지 마시고 전역 변수로 하나
: Create 시에 가지고 계셨다가, Destroy 시에 Release 해주시면 될것 같습니다.
유영인 Cuperido 님이 쓰신 글 :
: delete Capture14 , JPEGIMAGE14 와..
: GetDC 와 ReleaseDC가 짝이 안맞는것 같네요.
:
: DC14 = GetDC(0);
: ReleaseDC(0, DC14);
:
: 이렇게 두개가 짝이 맞아야 합니다.
:
: 그리고 95/98 OS 버젼에서 ReleaseDC 가 완전히 메모리를 해제 못하는
: 경우가 발생하므로, 쓰레드 안에 GetDC를 넣지 마시고 전역 변수로 하나
: Create 시에 가지고 계셨다가, Destroy 시에 Release 해주시면 될것 같습니다.
:
:
: cuperido
:
:
: 궁금한 사람 님이 쓰신 글 :
: : 화면을 캡쳐하는 부분입니다. 물론 아래 코드는 쓰레드 안에 코딩되어 있습니다.
: : 예전에 유영인님께서 답변을 해주세서 수정해서 해봤는데...마찬가집니다.
: : 프로그램이 한두시간정도 동작한뒤에 이런에러가 뜨는것 같네요.
: : 리소스가 부족하다는 에러메세지가 뜹니다. (Out of Resourece....)
: : 물론 아래 변수들은 모두 전역변수로 선언했습니다.
: : 프로그램 내구검사용이라 만약 내구검사회수(반복회수) 한 2달정도 계속 프로그램이 실행되고 있습니다.
: : 그림파일 하나의 용량이 약 700K 정도 되네요. 아래 코딩된 부분이 실행되는 주기는 약 2분정도입니다.
: :
: : //screen capture and save jpg file ------------------------------------
: : DC14 = GetDC(0);
: : Capture14 = new Graphics::TBitmap;
: : JPEGIMAGE14 = new TJPEGImage();
: :
: : Capture14->Width = 1280;
: : Capture14->Height = 1024;
: : Capture14->PixelFormat = pf16bit;
: :
: : BitBlt(Capture14->Canvas->Handle, 0, 0, 1280, 1024, DC14, 0, 0, SRCCOPY);
: : sprintf(textname,"정전내구%04d%02d%02d_CNT%06d.jpg", year, month, day, Form14->current_cycle);
: :
: : JPEGIMAGE14->Assign(Capture14);
: : JPEGIMAGE14->CompressionQuality = 100;
: : JPEGIMAGE14->SaveToFile(textname);
|