C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[21104] Re:[질문] 메뉴를 그림으로 캡쳐할려면...
유영인.Chris [cuperido] 687 읽음    2002-08-30 09:35
메뉴라면 어떤 메뉴를 말씀하시는 건지요.

DC = GetDC(0); 으로 전체화면을 얻고,
BitBlt(bmp->Canvas->Handle, 0, 0, width, height, DC, left, top, SRCCOPY);

위와같이 작업하시면 전체 화면을 캡쳐하실 수 있습니다. 메뉴가 화면에 보이는 것이라면, 캡쳐가 분명히 되겠지만, 화면에 보이지 않는 것이라면 캡쳐를 하실 수 없습니다. 후자에서는 무언가의 다른 작업이 필요하겠네요.

그리고, GetDC는 메모리 누수가 발생할 수 있는 함수입니다. 아래 첨부해주신 소스중에 GetCRT 라는 소스의 호출이 빈번하다면, OnCreate 같은 곳에서 GetDC 로 DC를 하나 얻어서 계속 작업하신 다음, OnDestroy 에서 Release 시켜 주는 식으로 하시는 방법이 좋습니다.


하느리 님이 쓰신 글 :
: 일반적인 경우, 화면을 캡쳐할려면,
: void __fastcall GetCRT (Graphics::TBitmap *bmp, TRect& area, int width, int height)
: {
:     bmp->Width  = width;
:     bmp->Height = height;
:     int col_num = GetCRTColorBit ();
:     if ( col_num == 4 )         bmp->PixelFormat = pf4bit;
:     else if ( col_num >= 16 )   bmp->PixelFormat = pf16bit;
:     else                        bmp->PixelFormat = pf8bit;
:
:     HWND desktop    = GetDesktopWindow ();
:     HDC dt_dc       = GetDC (desktop);
:         SetStretchBltMode (bmp->Canvas->Handle, STRETCH_HALFTONE);
:         StretchBlt (bmp->Canvas->Handle, 0,0, width, height,
:                     dt_dc, area.Left, area.Top, area.Right - area.Left, area.Bottom - area.Top, SRCCOPY);
:     ReleaseDC (desktop, dt_dc);
: }
:
: 이렇게 하면 되는데, 메뉴는 이렇게 해서 그림으로 저장할 수가 없네요.
: 아마도 윈도우핸들 (HWND) 때문인 것 같기도 한데,
: 메뉴를 그림으로 캡쳐할려면, 어떻게 해야 하나요 ?
:

+ -

관련 글 리스트
21092 [질문] 메뉴를 그림으로 캡쳐할려면... 하느리 671 2002/08/29
21104     Re:[질문] 메뉴를 그림으로 캡쳐할려면... 유영인.Chris 687 2002/08/30
21107         Re:Re:[질문] 메뉴를 그림으로 캡쳐할려면... (안되는데여. -__-) 하느리 618 2002/08/30
21109             Re:Re:Re:[질문] 메뉴를 그림으로 캡쳐할려면... (안되는데여. -__-) 유영인.Chris 672 2002/08/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.