|
DC자원(hdHandle)을 다 쓴 후 ReleaseDC함수를 호출해서 해제해주세요.
쿼드콥터헬기 님이 쓰신 글 :
: 화면 이미지 캡쳐 할때 뜨는 것 같습니다.
:
: 매번 뜨는 건 아니고요 어쩌다가 한번씩 뜨는데 그게 왜 그러는지 알려 주실수 있나요?
:
: 메모리 해제는 다해놨습니다.
:
: void __fastcall TRelayStart::ScreenCapture(void)
: {
: char capstrr[50];
: int i=0;
:
: HDC hdHandle = GetWindowDC(this->Handle);
: TImage *CAPTURE = new TImage(NULL);
: CAPTURE->Width = this->Width ;
: CAPTURE->Height = this->Height ;
: CAPTURE->Picture->Bitmap = NULL;
:
: BitBlt(CAPTURE->Canvas->Handle, 0, 0, this->Width, this->Height, hdHandle, 0, 0, SRCCOPY);
:
: sprintf( capstrr,"%s", TimeToStr(Time()));
: for( i=0; i<20; i++)
: {
: if( capstrr[i]==':')
: {
: capstrr[i] = '_';
: }
: }
: sprintf( strr, "%s\\%s\\CAPTURE\\%s_%s.jpg", g_strPathName, g_strModelName, DateToStr(Date()), capstrr );
:
: TJPEGImage *Hjpeg = new TJPEGImage();
: try
: {
: Hjpeg->Assign(CAPTURE->Picture->Bitmap);
: Hjpeg->SaveToFile(strr);
: }
: __finally
: {
: delete Hjpeg;
: }
: }
|