|
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);
|