한국 델파이 개발자 모임에 있는 델파이 클래스를 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;
}
//---------------------------------------------------------------------------
|