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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[551] 데스크탑 바탕화면을 TCanvas 로 만들어주는 클래스
김태선 [jsdkts] 8500 읽음    2005-12-20 10:44
한국 델파이 개발자 모임에 있는 델파이 클래스를 C++빌더용으로 변환했습니다.
너무 간단한 거라 클래스 선언부와 구현부를 나누지 않고 그냥 클래스 내부에 코드를 다 넣었습니다.

이 클래스는 데스크탑 화면을 빌더의 잘만들어진 TCanvas로 제어할 수 있도록 해줍니다.
이 클래스로 그림을 그리면 어플리케이션이나 바탕화면은 자신이 어떻게 분칠되고 있는지
알지 못합니다. 복원할때는 무효화 시켜주는 Invalidate 를 꼭 해줘야 합니다.
그건 어렵지 않으니 각자 알아서... -..-;

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "TDesktopCanvas.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;


//---------------------------------------------------------------------------
// 데스크탑을 Canvas 로 만들어주는 클래스

class TDesktopCanvas : public TCanvas
{
private:
    HDC  DC;
    __fastcall int    GetWidth()
    {
        return GetDeviceCaps(Handle, HORZRES);
    }
    __fastcall int    GetHeight()
    {
        return GetDeviceCaps(Handle, VERTRES);
    }
public:
    __fastcall TDesktopCanvas() : TCanvas()
    {
        DC = GetDC(0);    Handle = DC;
    }
    virtual __fastcall ~TDesktopCanvas()
    {
        ReleaseDC(0, DC);
    }
__published:
    __property int  Width  = { read = GetWidth  };
    __property int  Height = { read = GetHeight };
};

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// 사용예

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TDesktopCanvas  *Canvas = new TDesktopCanvas;
    Caption = String().sprintf("%d %d", Canvas->Width, Canvas->Height);
    Canvas->Rectangle(1,1,100,100);
    delete Canvas;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
551 데스크탑 바탕화면을 TCanvas 로 만들어주는 클래스 김태선 8500 2005/12/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.