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
[43671] Re:마우스 이미지를 캡쳐하려면? -> 구글형님께 물어보니...
누군가 [] 1752 읽음    2006-02-14 08:52
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Graphics::TBitmap *Bm = new Graphics::TBitmap();
    ScreenShot(0,0,Screen->Width,Screen->Height,Bm);
    DrawCursor(Bm);
    Bm->SaveToFile("mouseCapture.bmp");
    delete Bm;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ScreenShot(int x,int y,int width,int height,Graphics::TBitmap *Bm)
{
    HDC dc;
    LOGPALETTE *lpPal;

    if(width==0 || height==0) return;
    Bm->Width  = width;
    Bm->Height = height;
    dc = GetDC(0);
    if(dc == 0) return;
    if(GetDeviceCaps(dc,RASTERCAPS)&RC_PALETTE == RC_PALETTE) {
        lpPal = (LOGPALETTE*)malloc(sizeof(LOGPALETTE)+(255+sizeof(PALETTEENTRY)));
        ZeroMemory(lpPal,sizeof(LOGPALETTE)+(255+sizeof(PALETTEENTRY)));
        lpPal->palVersion = 0x300;
        lpPal->palNumEntries = GetSystemPaletteEntries(dc,0,256,lpPal->palPalEntry);
        if(lpPal->palNumEntries != 0) {
            Bm->Palette = CreatePalette(lpPal);
        }
        free(lpPal);
    }
    BitBlt(Bm->Canvas->Handle,0,0,width,height,dc,x,y,SRCCOPY);
    ReleaseDC(0,dc);
};
void __fastcall TForm1::DrawCursor(Graphics::TBitmap *ScreenShotBitmap)
{
    TRect   r;
    TCursorInfo CI;
    TIcon   *Icon;
    TIconInfo II;

    r = ScreenShotBitmap->Canvas->ClipRect;
    Icon = new TIcon();
    CI.cbSize = sizeof(CI);
    if(GetCursorInfo(&CI)) {
        if(CI.flags == CURSOR_SHOWING) {
            Icon->Handle = CopyIcon(CI.hCursor);
            if(GetIconInfo(Icon->Handle,&II)) {
                ScreenShotBitmap->Canvas->Draw(
                    CI.ptScreenPos.x - II.xHotspot - r.left,
                    CI.ptScreenPos.y - II.yHotspot - r.Top,
                    Icon
                );
            }
        }
    }

    delete Icon;
}

+ -

관련 글 리스트
43663 마우스 이미지를 캡쳐하려면? 넘초보 1535 2006/02/13
43672     감사드립니다. 잘 되네요.^^ 넘초보 1033 2006/02/14
43671     Re:마우스 이미지를 캡쳐하려면? -> 구글형님께 물어보니... 누군가 1752 2006/02/14
43664     Re:마우스 이미지를 캡쳐하려면? civilian,안영제 1188 2006/02/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.